自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 torch-sparse安装

根据torch和cuda版本修改-f那个链接即可。

2024-03-13 19:41:21 112

原创 diverta2019-2 E - Balanced Piles

对于一个序列a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,同时给它们分配一个1,2,...,n1,2,...,n1,2,...,n的排列b1,b2,..,bnb_1,b_2,..,b_nb1​,b2​,..,bn​,满足:如果ai

2022-07-10 21:03:54 228 1

原创 用缩点法证明kruskal和prim算法的正确性

设nnn个点mmm条边的无向带权连通图引理:所有边集中边权最小的边一定是最小生成树中的边证明:对于任意一颗不含有最小边的最小生成树,把最小边加入生成树,会构成一个环,环上的边权值都比大于等于最小边,如果环上的最大值大于最小边,删掉最大边保留最小边可以让生成树权值减少,这与该生成树是最小生成树矛盾。因此得到环上边的权值都等于最小边,于是引理成立。推论:每次拿出最小边u,vu,vu,v,将u,vu,vu,v合并成一个新的结点(加入u,vu,vu,v后它们已经处于一个连通块),对应的边也合并,可以得到一个点

2022-02-16 17:09:03 466

原创 51nod1359 循环探求

求最小的x(x>1)x(x>1)x(x>1)满足nx=n(mod  10k)n^x=n(\mod 10^k)nx=n(mod10k)。值得注意的是这里并不能化成nx−1=1(mod  10k)n^{x-1}=1(\mod 10^k)nx−1=1(mod10k),因为nnn在mod  10k\mod 10^kmod10k下不一定有逆元,典型的例子是324=76(mod  100),325=32(mod  100)32^4=76(\mod 100),32^5=32(\mod 100)324=

2022-01-12 19:31:13 201

原创 Slope Trick

问题引入CF713C给出n{n}n个整数a1,a2,...,an{a_1,a_2,...,a_n}a1​,a2​,...,an​,一次操作可以选择一个整数ai{a_i}ai​使其变为ai=ai−1+1{a_i=a_{i-1}+1}ai​=ai−1​+1或ai=ai−1−1{a_i=a_{i-1}-1}ai​=ai−1​−1,问使得a1<a2<...,an{a_1<a_2<...,a_n}a1​<a2​<...,an​所需要的最小操作次数。解法ai<ai+1↔

2021-09-14 20:49:41 436

原创 拟阵拟阵交

本文参考2018集训队论文《浅谈拟阵的一些拓展及其应用》本文只谈如何用拟阵,不谈证明,证明参考《浅谈拟阵的一些拓展及其应用》。定义对于一个集合S{S}S,如果SSS的子集TTT满足某种特殊性质,则将TTT称为独立集,特别地,将空集成为独立集。定义拟阵M=(S,I)M=(S,I)M=(S,I)表示,其中III为所有独立集的集合,并且III需要满足两个性质才能被称为拟阵:遗传性:如果T∈IT\in IT∈I,则任意T{T}T的子集PPP都要满足P∈IP\in IP∈I。交换性:如果A,B∈IA,B

2021-09-05 12:44:40 530

原创 ARC120E - 1D Party

解法一二分至少需要多少秒,设至少需要mmm秒。设dpi,0dp_{i,0}dpi,0​为第iii个人先往右,碰到第i+1i+1i+1个人之后再往左,mmm秒内第iii个人至多能往右走多远。设dpi,1dp_{i,1}dpi,1​为第iii个人先往左,碰到第i−1i-1i−1个人之后再往右,mmm秒内第iii个人至多能往右走多远。初始状态为dp1,0=dp1,1=mdp_{1,0}=dp_{1,1}=mdp1,0​=dp1,1​=m。然后分析转移:1.第i−1i-1i−1个人先往右,第iii个人先

2021-05-26 17:45:00 419

原创 【题解】牛客挑战赛50

A Red and Blue and Green对于所有偶数位置,将它的颜色修改成和两边不同的颜色。#include<bits/stdc++.h>#define inf 0x3f3f3f3ftypedef unsigned long long ull;typedef long long ll;#define rep(i,l,r) for(int i=l;i<=r;i++)#define nep(i,r,l) for(int i=r;i>=l;i--)void sc(i

2021-05-12 21:33:12 427

原创 树状数组Q

看完后记得刷相应的题练习哦。整除分块对于整数lll,求最大的整数rrr满足⌊nl⌋=⌊nr⌋\lfloor\frac{n}{l}\rfloor=\lfloor\frac{n}{r}\rfloor⌊ln​⌋=⌊rn​⌋。解:设⌊nl⌋=x\lfloor\frac{n}{l}\rfloor=x⌊ln​⌋=x,我们要求最大的整数rrr是的⌊nr⌋=x\lfloor\frac{n}{r}\rfloor=x⌊rn​⌋=x,由于nr≥⌊nr⌋=x\frac{n}{r}\ge \lfloor\frac{n}{r}\

2021-05-02 23:31:54 218

原创 dp凸优化

Tree I设选择xxx条白边的答案为f(x)f(x)f(x)。首先,根据kruskalkruskalkruskal直接生成一颗最小生成树,假设有xxx条白边,如果要减少到x−1x-1x−1条,则需要删除在前的一条白边,加入一条边权等于或更大的黑边。如果要增加到x−1x-1x−1条,同样需要删除一条黑边,加入一条边权等于或更大的白边。从而,f(x)f(x)f(x)是一个下凹函数。把点数看作xxx轴,f(x)f(x)f(x)的值看作yyy轴,f(x)f(x)f(x)的图像大致如下:如果分别对点x=

2021-02-12 20:48:49 414

原创 Codeforces Round #699 (Div. 2)

A - Space Navigation设最终走到点(x,y)(x,y)(x,y),然后,删除一个LLL相当于x+1x+1x+1,删除一个RRR相当于x−1x-1x−1,删UUU相当于y−1y-1y−1,删DDD相当于y+1y+1y+1。判断(x,y)(x,y)(x,y)到点(px,py)(px,py)(px,py)是否可能通过上述操作到达即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;const

2021-02-06 17:07:01 242

原创 Educational Codeforces Round 102 (Rated for Div. 2)

C No More Inversions首先,对于1,2,...,k−1,k,k−1,...,2,11,2,...,k-1,k,k-1,...,2,11,2,...,k−1,k,k−1,...,2,1这样的排列,它只和k,k−1,...,2,1,2,...,k−1,kk,k-1,...,2,1,2,...,k-1,kk,k−1,...,2,1,2,...,k−1,k的逆序数相同,其它情况逆序数都会更多。其次,题目给的序列可以分成1,2,...,t1,2,...,t1,2,...,t和t+1,t+2,..

2021-01-15 18:56:31 226

原创 AtCoder Regular Contest 111

A Simple Math 2ans=10n mod (m∗m)m mod mans=\frac{10^n\bmod(m*m)}{m}\bmod mans=m10nmod(m∗m)​modm#include<bits/stdc++.h>using namespace std;typedef long long ll;ll n,m;ll qpow(ll a,ll n,ll mod){ ll ans=1; for(;n;n>>=1,a=a*a%mod)

2021-01-09 23:51:18 487

原创 AtCoder Beginner Contest 187

E - Through Path不妨设uuu是vvv的父亲,一次操作可以改写为:将vvv的子树上的点的权值都加xxx。将所有结点的权值加xxx,再将vvv的子树上的点的权值减xxx。可以采用树上差分。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;int n,a[N],fa[N],b[N],tot,head[N],nex[N<<1],to[N&lt

2021-01-06 19:51:58 184

原创 三元环

Problem给出nnn个点mmm条边的无向图,找出图中所有长度为333的环。Solution根据原图计算每个点的度数,然按以下规则将图转为有向图:对于原图中一条边,如果两个端点的度数不相等,则度数大的点指向度数小的点。否则,标号大的点指向标号小的点。将图转换成有向图后,枚举每个点aaa,枚举aaa指向的每个点bbb,枚举bbb指向的每个点ccc,判断点aaa和ccc之间是否有边,如果有,则构成一个三元环,否则不构成三元环。正确性证明首先,若将图中的结点按度数为第一关键字,标号为第二关键字排序

2020-10-31 10:44:01 1331

原创 KMP算法

1.nex数组对于长度为nnn的字符串SSS,定义nexi=max{x∣x∈{1,2,...,i−1}}nex_i=max\{x|x\in \{1,2,...,i-1\}\}nexi​=max{x∣x∈{1,2,...,i−1}}且xxx满足S1S2....Sx=Si−x+1Si−x+2...SiS_1S_2....S_x=S_{i-x+1}S_{i-x+2}...S_iS1​S2​....Sx​=Si−x+1​Si−x+2​...Si​。特别地,若不存在这样的xxx,则nexi=0nex_i=0nexi

2020-10-28 11:48:32 212 1

原创 十字链表

有向图的一种链式存储结构。其有两种结点:顶点结点和边结点。有向图中的边也叫弧,为了方便,这里采用边的概念。入边:如果一条边eee的终点是点uuu,则称eee为uuu的入边。出边:如果一条边eee的起点是点uuu,则称eee为uuu的出边。对于一条从顶点uuu到顶点vvv的边eee,eee即是uuu的出边也是vvv的入边。1.顶点结点顶点结点的结构:(data,firstIn,firstOut)。data:结点所存储的信息。firstIn:指向该结点的第一个入边。firstOut:指向该结点

2020-10-07 16:36:29 275

原创 生成函数

简介生成函数用于解决以下问题:给定数列前几项和递推关系,求数列通项。定义一个数列a=a0,a1,a2,...a={a_0,a_1,a_2,...}a=a0​,a1​,a2​,...的生成函数为f(x)=∑n≥0aixif(x)=\sum_{n\ge0}a_ix^if(x)=∑n≥0​ai​xi。显然,函数f(x)f(x)f(x)中xix^ixi的系数就是数列的第iii项。生成函数的思想就是利用多项式运算求得f(x)f(x)f(x)系数的通项公式,即数列的通项公式。封闭形式设无穷幂级数f(x)=1+

2020-09-15 13:02:37 733

原创 J Just Shuffle

题意:给出n,kn,kn,k和一个排列A=A1,A2,...,AnA={A_1,A_2,...,A_n}A=A1​,A2​,...,An​,定义排列Q=1,2,...,nQ={1,2,...,n}Q=1,2,...,n,找出一个排列P=P1,P2,...,PnP={P_1,P_2,...,P_n}P=P1​,P2​,...,Pn​,使得Q∗Pk=AQ*P^k=AQ∗Pk=A,输出Q∗PQ*PQ∗P。题解:预备知识:排列的置换运算Q∗Pk=AQ*P^k=AQ∗Pk=A(Q∗Pk)invk=Ainvk(

2020-09-15 12:23:11 169

原创 排列的置换运算

1.定义给定定两个排列P=p1,p2,...,pnP={p_1,p_2,...,p_n}P=p1​,p2​,...,pn​,Q=q1,q2,...,qnQ={q_1,q_2,...,q_n}Q=q1​,q2​,...,qn​。排列QQQ关于排列PPP进行置换运算得到的新排列为Ans=Q∗P=PQ1,PQ2,...,PQnAns=Q*P={P_{Q_1},P_{Q_2},...,P_{Q_n}}Ans=Q∗P=PQ1​​,PQ2​​,...,PQn​​。这就是排列的置换运算。即:某个排列关于排列P

2020-09-15 12:22:58 1760

原创 多项式

拉格朗日插值引理:给定nnn个点(x1,y1),(x2,y2),...,(xn,yn)(x_1,y_1),(x_2,y_2),...,(x_n,y_n)(x1​,y1​),(x2​,y2​),...,(xn​,yn​),可以唯一的确定一个n−1n-1n−1次多项式f(x)=∑i=0n−1aixif(x)=\sum_{i=0}^{n-1}a_ix^if(x)=∑i=0n−1​ai​xi。证:将nnn个点代入多项式...

2020-09-14 10:44:48 228

原创 后缀自动机重启之后缀自动机归来

1.endpos对于字符串sss,sss的子串ttt,定义endpos(t)endpos(t)endpos(t)为一个集合,这个集合的元素为ttt每次在sss中出现的结束位置。例:s=abcaabcs=abcaabcs=abcaabc,endpos(a)={1,4,5},endpos(bc)={3,7}endpos(a)=\{1,4,5\},endpos(bc)=\{3,7\}endpos(a)={1,4,5},endpos(bc)={3,7}。特别的,定义endpos(空串)={0,1,2,...,

2020-09-12 00:18:07 168

原创 字符串--Lyndon分解

1.定义一个字符串是LyndonWordLyndon WordLyndonWord,当前仅当这个字符串是其所有后缀中字典序最小的。一个字符串sss的LyndonLyndonLyndon分解是将字符串划分为若干个部分s1s2...sms_1s_2...s_ms1​s2​...sm​使得∀1<=i<=m:si\forall 1<=i<=m:s_i∀1<=i<=m:si​是一个LyndonWordLyndon WordLyndonWord,∀1<=i<m:si&

2020-09-05 18:52:22 342

原创 字符串-最小表示法

1.问题描述给出一个长度为nnn的字符串SSS,其第iii个字符为Si(0<=i<n)S_i(0<=i<n)Si​(0<=i<n)。可以重复执行操作:移除第000个字符,并将其插入到第n−1n-1n−1个位置。找出所有可以通过上述操作得到的字符串中字典序最小的字符串,这个字典序最小的字符串被称为字符串SSS的最小表示。2.算法流程1.定义两个指针i,ji,ji,j,定义变量kkk,初始时,让iii指向位置000,jjj指向位置111,k=0k=0k=0。2.比

2020-09-04 20:20:30 214

原创 AtCoder Beginner Contest 177(E,F)

E - CoprimeFirst,judging the gcd(a1,a2,...,an)gcd(a_1,a_2,...,a_n)gcd(a1​,a2​,...,an​) whether equal to 111.Then,if not equal to 111,output “not coprime”,else we judging whether is multiply number’s factory for every <=1e6<=1e6<=1e6’ prime。The

2020-08-30 13:46:56 484

原创 Rotate

由于序列aaa递增,故第i+1i+1i+1个环中的黑块最多于第iii个环中的一个黑块相连。把黑块看作点,黑块之间有交点看作边,则我们得到了一个森林。森林的连通块个数=点数-边数。显然点数=(a1+a+2+...+an)/2=(a_1+a+2+...+a_n)/2=(a1​+a+2+...+an​)/2。考虑期望的边的数量:对于环iii和i+1i+1i+1,其黑点数目总数为(ai+ai+1)/2(a_i+a_{i+1})/2(ai​+ai+1​)/2,对于一个黑点,其要么与黑点有连接,要么与黑点无连.

2020-07-21 19:12:48 220

原创 AIsing Programming Contest 2020

D - Anything Goes to Zero设串XXX中111的个数为sumsumsum,若翻转的是111,111的个数减111,若翻转的是000,111的个数加111,故我们得到两个模数sum−1sum-1sum−1和sum+1sum+1sum+1,故两个模数分开处理翻转000和111的情况。计算f(Xi)f(X_i)f(Xi​),第一次取模sum−1sum-1sum−1或sum+1sum+1sum+1会使得xi<=2e5x_i<=2e5xi​<=2e5,可以对前2e52e52

2020-07-12 09:55:43 312

原创 卡特兰数

卡特兰数前几项:1,2,5,14,42,1321, 2, 5, 14, 42, 1321,2,5,14,42,132。1.进出栈问题栈是一种先进后出的数据结构,考虑用111表示进栈,用−1-1−1表示出栈,总共有nnn个元素进出栈,计算有多少种不同的进出栈序列。2.递推式用Cata(n)Cata(n)Cata(n)表示上述问题规模为nnn时的方案书,考虑最后一个出栈的元素,比其先进栈先出栈的元素有iii个,则比其后进栈先出栈的元素有n−i−1n-i-1n−i−1个,则得出卡特兰数递推式为∑i=0n−

2020-07-10 22:06:27 223

原创 [SCOI2010]生成字符串

无约束条件的方案数为C(n+m,m)C(n+m,m)C(n+m,m)。把000改做−1-1−1,那么题意转换为,字符串任意一个前缀的前缀和都>=0>=0>=0。充分性考虑一个不满足约束条件的字符串,找到其第一个前缀和为−1-1−1的位置,此时这个位置后面count(1)=count(−1)+n−m+1count(1)=count(-1)+n-m+1count(1)=count(−1)+n−m+1(count(x)count(x)count(x)表示xxx的数量)。把这个位置后面的1

2020-07-10 21:43:33 238

原创 AtCoder Grand Contest 046

A Takahashikun, The Strider往某个方向走1步,那就要在这个方向的对立方向(转180度)往回走1步。那么只要转了是360的倍数,各个方向和其对立方向走的步数是相同的,答案为LCM(x,360)/xLCM(x,360)/xLCM(x,360)/x。#include<bits/stdc++.h>using namespace std;int main(){ int x;scanf("%d",&x); printf("%d\n",x/__gcd

2020-06-21 07:13:54 489

原创 tokiomarine2020 F(匹克定理)

F Triangles匹克定理:若多边形顶点坐标都为整点,令其面积为SSS,其内部整点数为nenene,其边界上的整点数为wawawa,则有S=ne+wa/2−1S=ne+wa/2-1S=ne+wa/2−1设三个点为(a,0),(0,b),(w,c)(a,0),(0,b),(w,c)(a,0),(0,b),(w,c),其中c>=bc>=bc>=b,对与c<bc<bc<b由对称性可得。对于选其它不同边上的点可转换为同样的情况。根据匹克定理,有2∗ne=2∗S−wa+

2020-06-19 16:01:20 429

原创 npm ERR! code ELIFECYCLE npm ERR! [email protected] start: `react-scripts start`

npm ERR! code ELIFECYCLEnpm ERR! [email protected] start: react-scripts start在项目根目录下创建an.env记事本打开,在里面填写SKIP_PREFLIGHT_CHECK=true重新启动cmd,再npm start即可

2020-06-01 14:56:43 1036 1

转载 【转载】KM算法原理+证明

KM算法原理+证明 原创 ...

2020-03-22 10:28:41 823 1

原创 AtCoder Beginner Contest 158

E - Divisible Substring数组sss的元素为s1,s2,s3,s4...sns_1,s_2,s_3,s_4...s_ns1​,s2​,s3​,s4​...sn​令数组aaa为10−1∗s1,10−2∗s2,10−3∗s3,10−4∗s4...,10−n∗sn10^{-1}*s_1,10^{-2}*s_2,10^{-3}*s_3,10^{-4}*s_4...,10^{-n}*...

2020-03-08 13:06:54 324

原创 AtCoder Beginner Contest 157

A Duplex Printing#include<bits/stdc++.h>using namespace std;const int N=10;int n;int main(){ cin>>n; cout<<n/2+n%2<<endl;}B Bingo#include<bits/stdc++.h&gt...

2020-03-03 14:13:55 434

原创 AtCoder Regular Contest 084

D Small Multiple任何数都可以从1通过以下操作得到:1 x->x+1,花费为12 x->x*10,花费为0可以发现这样操作得到一个k的倍数,那么答案就是操作的花费加1我们把所有点都在mod k意义下表示,那么可以一张图,然后求出点1到点0的最短路径再加1就是答案,相当于从一开始走最少的花费走到一个k的倍数的点。#include<bits/stdc++.h...

2020-03-02 17:51:54 200

原创 AtCoder Regular Contest 089

E GraphXY我们构造这样一张图,那么一条路径就是,把上面第i个点连到下面倒数第j个点的边称为fi,j{f_{i,j}}fi,j​,那么经过边fi,j{f_{i,j}}fi,j​的距离就是fi,j+i∗x+j∗y{f_{i,j}+i*x+j*y}fi,j​+i∗x+j∗y。对于1<=x<=a,1<=y<=b{1<=x<=a,1<=y<=b}...

2020-02-27 18:33:54 263

原创 AtCoder Beginner Contest 155

A Poor#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;int n;int main(){ int a,b,c;cin>>a>>b>>c; if(a==b&&b!=c||a==c&amp...

2020-02-18 13:06:36 715 5

原创 diverta 2019 Programming Contest

C AB Substrings#include<bits/stdc++.h>using namespace std;const int N=1e4+5;int n;int main(){ scanf("%d",&n); int ans=0,l=0,r=0,flag=false; for(int i=1;i<=n;i++) { ...

2020-02-14 13:33:39 258

原创 NIKKEI Programming Contest 2019

A - Subscribers#include<bits/stdc++.h>using namespace std;int main(){ int n,a,b; cin>>n>>a>>b; cout<<min(a,b)<<' '<<max(a+b-n,0)<<endl;...

2020-02-12 17:35:17 293

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除