acm算法模板domino多米诺骨牌取0到0n的状态_第1页
acm算法模板domino多米诺骨牌取0到0n的状态_第2页
acm算法模板domino多米诺骨牌取0到0n的状态_第3页
acm算法模板domino多米诺骨牌取0到0n的状态_第4页
acm算法模板domino多米诺骨牌取0到0n的状态_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、矩阵乘domino 多米诺骨牌取0 到0n 的状态pku3233S=A+A2矩阵乘domino 多米诺骨牌取0 到0n 的状态pku3233S=A+A2+A3+pku2778 n 总削消Ural01 转换为mod 消Hdu2408动态规状态压pku1038 一个有限制的矩形用2*3 覆盖,最多能覆盖多少块(三进制pku241111*11 的格子用1*2 铺兵阵pku2430 两列n 行一堆牛besttriangular放积木,要求放hrb5085 放积木,积木不能旋转(注意长宽方向),求最多铺的面树型树的最小点覆树的最大独立点树的节点只与一个server 相连pku1947 删最少的边得到一个

2、含p 个节点的子树(dfs 降维pku3140m 的。树分成两半,节点权和差最tsoi3_4 所有点间距离的平均在权值非负的情况下包括尽量多的叶子节点(dfs 降维dfs 降pku2486appletree 两种状态互相推导拓扑序Hdu2437 Jerboas有向无环图单起点多终点路线为K的倍数地最短的路线长度.50 Hdu2452Navymaneuvers 有向无环图,两个船长轮流领一般性结石子合pku1160 有n 个村子要建p 个邮单调队单调队pku2823 求数列中定长区间的最大最小hdu2430 预处理gx=i 表示si%p=x 的第一个 zoj3031 邮件分pku1821n 个工

3、人刷长为m 的平衡二叉pku1765 算每个屋檐的降雨量,扫除线pku33785维逆序归并排Hrb5085 树状数pku3321Apple线段线段树总Pku3225 集合操作 线段树翻pku1769 线段树Hdu2430 线段树dp 询问长度为k 的区间中的最小值 Pku3469 构图(关键,求最求割边Hdu2435 求最小割,再在残余网络中求最大Pku3155 最大密度子图二分图匹最大匹Hrb508701染色判奇环,二分图最大匹Pku3692 最大完全子最优匹zju3035Zju3035by连通(强连通求Pku1438 在保证图仍然为强连通的前提下,把尽量多的双向边改为单向Pku3177 无

4、向图求二连通子PKU2723 二分2-sat 验证pku3683n 个婚礼问能否全部举行,要求构造字符串处PKU2723 二分2-sat 验证pku3683n 个婚礼问能否全部举行,要求构造字符串处后缀树 后缀树+后缀数组dfapku3691 有穷状态domino 多米诺骨牌取0 0n 的状态#include using void if(d=m)gab=1;returnif(a&(1d)dfs(d+1,a,b); else if(dm-1)&!(a&(1(d+1)void for (i=0;in;i+)for for (k=0;kn;k+) for(i=0;i(1m);i+)dfs(0,i,0

5、); for(i=0;i(1m);i+)f0i=1; if (n&1) return 0;pku3233S = A+ A2 + A3 + +for(i=0;i(1m);i+)dfs(0,i,0); for(i=0;i(1m);i+)f0i=1; if (n&1) return 0;pku3233S = A+ A2 + A3 + + #include using void for for(j=1;j=2*n;j+) for (k=1;k=2*n;k+) for for (j=1;j=n;j+) for(i=1;i=n;i+)gi+ni+n=1; for (i=1;i=2*n;i+) fii=1;

6、if (k&1) for (i=1;i=n;i+) for(j=1;j=n;j+)f(%d不含疾的长度为的for (j=1;j=n;j+) for(i=1;i=n;i+)gi+ni+n=1; for (i=1;i=2*n;i+) fii=1;if (k&1) for (i=1;i=n;i+) for(j=1;j0)que+r=triei.childj; if(f=root)saci=root; while(d!=root&tried.childgetnum(c)=0) if if(triesaci.final)else if(!triei.final)void for (i=1;i=stas;

7、i+)for else if(!triei.final)void for (i=1;i=stas;i+)for for (k=1;k=stas;k+) for (i=1;i=m;i+)for (i=1;i=size;i+) if(!triei.final)while(k!=root&if(triek.childj=0)ftriei.statrieroot.sta+; else if(!triek.final)for(i=1;i=stas;i+)gii=1; if(n&1)mul(g,f); for (i=1;i=stas;i+) return voj1049 m if(n&1)mul(g,f)

8、; for (i=1;i=stas;i+) return voj1049 m m k次置换后的序列。m=10k231#include for(i=1;i=n;i+)f0i=i; for (i=1;i=m;i+)for(j=1;j=n;j+)scanf(%d,&x); for(i=1;i=n;i+)ai=i; nn=k/m; q=k%m; if for(i=1;i=n;i+)ci=abi; for(i=1;i=n;i+)ci=bbi; for(i=1;i=n;i+)ci=afqi; for fij=fi-1x; (i=n) f(n);elsef(可以用上面的方法二分求出任何一个线性递推式的第n在

9、右上角的(n-1)*(n-1)的小矩阵中的主对角线上填 1n 行填对应的系数,其它地方f(n) = 4f(n-1) - 3f(n-2) + 2f(n-4)(i=n) f(n);elsef(可以用上面的方法二分求出任何一个线性递推式的第n在右上角的(n-1)*(n-1)的小矩阵中的主对角线上填 1n 行填对应的系数,其它地方f(n) = 4f(n-1) - 3f(n-2) + 2f(n-4)#include n,long long cmaxnmaxn,long for (i=1;i=n;i+)for for (k=1;k=n;k+) longlongans; for(i=1;i=k;i+) fo

10、r(j=0;ji;j+)if(n=k)coutfnendl; else for(i=1;i=k;i+)for(i=1;ik;i+)for(i=1;i=k;i+)aki=1; if (n&1) for if(n=k)coutfnendl; else for(i=1;i=k;i+)for(i=1;ik;i+)for(i=1;i=k;i+)aki=1; if (n&1) for return Ural消#include using boolfor if(tis)returni; return 0;void for (i=1;i=n;i+)if(j=-1)break; for (i=1;i=n;i+)

11、 for (i=1;i=n;i+)if(j=-1)break; for (i=1;i=n;i+) void bool x;for if (!tii) if (s=0) continue;for(j=i;j=n+1;j+)x=tij;tij=tsj;tsj=x;for(j=i+1;j=n;j+) if (tji)for(k=i+1;k=n+1;k+) if if(!tnn+1)anyn=true;elsecoutNosolution=1;i-)if(anyi)ansi=false; else for (j=i+1;j=n;j+) x=(tij&ansj);for if (ansi)f(%dret

12、urn 01 转换为mod#include bool return 01 转换为mod#include bool for if(ais!=0)return return 0;void for (i=1;i=n;i+)if(j=-1)break; for(i=1;i=n;i+) void for if(aii=0) if(s=0)anyi=true;void for if(aii=0) if(s=0)anyi=true;continue; else for(j=i;j=n+1;j+) x=aij;aij=asj;asj=x;for for if if(ann+1=0)elsecoutNosolu

13、tionendl;if(anyi)ansi=true; for if(ansj)x-if(abs(x)%mod=0)ansi=false; else ansi=true;if (ansi)f(%dreturn 实消#include using bool for 实消#include using bool for if(ais!=0)returni; return 0;void double tmp; for(i=1;i=m;i+) if(rxy=0)elserxy=rxy*tmp/(rxy+tmp); for for if (j!=i &aii-void double x;for if(aii

14、=0) if(s=0)continue; else for(j=i;j=n+1;j+) if(aii=0) if(s=0)continue; else for(j=i;j=n+1;j+) x=aij;aij=asj;asj=x;for(j=i;j=n+1;j+)aij/=x; for (j=i+1;j=n;j+)for (k=i+1;k=1;j-)void doublex,y; for if(i!=1&ri1!=0)x+=(ain+1-if(i!=n&rin!=0)y+=(ain+1-if (x!=-return ; return0;Hdu2408 整系数线性方程组的整数#include (消

15、元using return0;Hdu2408 整系数线性方程组的整数#include (消元using longa30maxn,ansmaxn; for if(aiii!=0)returni; return 0;void for (i=1;i=n;i+)for(j=0;jlen;j+)asij-void long long x;bool ok; for while(aiii=0&bool ok; for while(aiii=0&ii=n) if(j=0)anyi=true;ii+;else for(k=i;kn) for for (k=ii+1;k=n+1;k+) for if(ajn+1!

16、=0)for(j=ii;j=1;i-if(anyi)ansi=1;continue; for x-if(x%aii=0)ansi=x/aii; else if (!ok) / return ;for if(ansi!=0)ok=true;break; if (!ok) return ;for if f(%s(ansi0)(ansi0)(ansi0)(ansi=0)f(L f(R%dn,-ansi); f(N 0n);return 分消元(高精度classMainmaxn= = = s;j,k,k_c,k_r,pivot,egerfor (i = 0; i m; i+) for(j=0;jm;j

17、+)if(i=j)else /*eliminatek_c k_cn;k_c+)(k_c=k_r=/*find pivotfor(pivot=k_r;pivotm&(pivot m) /*eliminatek_c k_cn;k_c+)(k_c=k_r=/*find pivotfor(pivot=k_r;pivotm&(pivot m) rswaprows (pivot for (j pivotandk_r*/ k_r) k_c;jn;j+)t = ak_rj = for (j = 0;j m;j+) t = bpivotj= =do for(i=k_r+1;m; i+)j n; for (j =

18、 =;for (j = 0;j m;=;aik_c =d=ak_rk_c; for m &if =m)return -/*nownormalizeg 0; k m; k+)g = =r0; k m; k+)k=;public icvoidmain(StringScannercin=new egersign new Bign zero= if =m)return -/*nownormalizeg 0; k m; k+)g = =r0; k m; k+)k=;public icvoidmain(StringScannercin=new egersign new Bign zero= for (j=

19、0;j=n;j+) aji=cin.nextBigani = if zero= for(j=0;jn;j+) (aij.toString()+if for(i=0;in;i+) if /if n)while(true)for if if(!x.equals(br ln(No状态压pku1038 一个有限制的矩形用#include if(!x.equals(br ln(No状态压pku1038 一个有限制的矩形用#include 覆盖,最多能覆盖多少块(三进制bool void for(i=1;imaxm;i+) for (i=0;ifnmaxm-1;i+) void (fkbfkb)fkb=n

20、um; (y=m) return;if (y0 & day-1=0 &void (fkbfkb)fkb=num; (y=m) return;if (y0 & day-1=0 & day=0 & dby-1=0 & for (i=1;i=kn;i+)gy-k=0; num=1;for(i=0;im;i+)x+=2*fni; quek1=x;fkx=0; for (x=1;x=n;x+)k=1-k; for (i=1;ians)return pku2411 11*11 的格1*2 铺满,有多少用不同的方法#include 64 64ansmaxnmaxn; return pku2411 11*11

21、 的格1*2 铺满,有多少用不同的方法#include 64 64ansmaxnmaxn; void if (d=m) if(fkb=0)return ;if(a&(1d)dfs(d+1,a,b); else if (dm-1)& for k=0;num=1;queknum=0;fk0=1; for (n=1;n=11;n+)k=1-k; r=0; for (i=1;i=num;i+) while(scanf(%d%d,&n,&m)=2&n&兵阵地,有限制的矩形#include char void forwhile(scanf(%d%d,&n,&m)=2&n&兵阵地,有限制的矩形#includ

22、e char void for(i=1;imaxm;i+) for (i=0;ifnmaxm-1;i+) void (fkbfkb)fkb=num; (y=m) return;if(gxy=P&day=0)for(i=1;i=n;i+)scanf(%s,gi); k=0; num=1;quek1=0;for(x=1;x=n;x+) k=1-k; r=0;for (i=1;ians)ans=fkqueki; for(x=1;x=n;x+) k=1-k; r=0;for (i=1;ians)ans=fkqueki; return pku2430 两列n 行一堆牛#include #include

23、TOOBIG=add55h5=x, w, boolcomp(constcowa,constcowif(a.x!=b.x) return(a.x return a.y #definef(i)n, k, while(scanf(%d%d%d,&n,&k,&b)=3) cow cows1010;for i=0;in;i+)scanf(%d%d,sort(cows,cows+n,return a.y #definef(i)n, k, while(scanf(%d%d%d,&n,&k,&b)=3) cow cows1010;for i=0;in;i+)scanf(%d%d,sort(cows,cows+

24、n,area m = 0,ts, lx =-i=0;in;if(i+1n&cowsi+1.x=cowsi.x) ts = 3; else ts = cowsi.y; if (lx+1 =if(alistm-1.s=ts) else alistm.w=cowsi.x-lx-1; alistm.s = 0;alistm.w = 1; alistm.s= = forsmemset(f00,0,for ( for p=1;p5;j=0;j=k;j+)f(0)pj=i=1; im; i+) p=0;p5;p+)(j=0;j=k;j+)f(i)pj=p=0;p5;p+)if(p=4|(p&alisti.s

25、)=for pp= 0; pp 5; for (j=addppp;j=k;j+) jj = j-addppp;if(f(i-1)ppjj+hp*alisti.wf(i)pj=f(i-1)ppjj+hp* for pp= 0; pp 5; for (j=addppp;j=k;j+) jj = j-addppp;if(f(i-1)ppjj+hp*alisti.wf(i)pj=f(i-1)ppjj+hp* minsize= for p= 0; p 5; if(f(m-1)pkminsize)minsize=f(m-1)pk; cout minsize endl;besttriangular #inc

26、lude 64gmaxnummaxnmaxn; bool markmaxnum; bool 64num; for(i=0;in;i+)scanf(%d,&ai); for (i=1;i=m;i+) x-; y-if (n=1) f(%dcontinue;for for if(i!=j&for for if(i!=j&tij) if (!marks) for for if(i!=j&s&(10) for (k=0;kn;k+)if(!(s&(1k)&tjk) if (!markss) (tik) x+=ai*aj*ak; (fssjk=x)gssjk+=gsij; (fssjkx) maxf=n

27、um=0;s=(1n)-1; for (i=0;i0&if(fsij=maxf)num+=gsij; if (fsijmaxf) f(%d/coutmaxfreturn 放积木,要求放maxn=maxm= n, struct f(%d/coutmaxfreturn 放积木,要求放maxn=maxm= n, struct listmaxm* charg55,void memcpy(x,g,sizeof(g); i , j;for(i=0; i3; i+) for(j=0;jmaxi)if (j=0;i-) for(j=minj;j3;j+)if listm.sj-minj|=1(maxi-i);

28、 for(i=0; im; i+)if(listi.s0 = listm.s0 & listi.s1 listi.s2 = listm.s2)if(c maxi)if (j=0;i-) for(j=minj;j3;j+)if listm.sj-minj|=1(maxi-i); for(i=0; im; i+)if(listi.s0 = listm.s0 & listi.s1 listi.s2 = listm.s2)if(c listi.cost) listi.cost=return = void i,a,M,c; for(i=0;in;scanf(%d, H + Hn=Hn+1=scanf(%

29、d, m=1;list0.s0=list0.s1 scanf(%d , &c); for(a=0;a3;scanf(%s,ga); for(i=0; i4; i+)= =prev ,void a b c i,h H&);a&);a= (1 H) -if(Fcurtbc0if(Fprevabcvoid i,j,a,b,c; memset(F,0 xff,sizeof(F); prev = 0;Fprev000=for(i=0;in;curt = 1 -memset(Fcurt,0 xff,sizeof(Fcurt); for(a=0; a(1Hi); a+)for(b=0;b(1Hi+1);fo

30、r(c=0;c(1=0) for(j=0; jm; j+)for(h=0; ;if(j=0&h= renew(a,b,c1)(1Hi+1)(1Hi+2)j,Hi,+prev = if(Fprev000=0)else east%dGil(s).n,while(scanf(%d,&n)&n) return hrb5085 放积木,prev = if(Fprev000=0)else east%dGil(s).n,while(scanf(%d,&n)&n) return hrb5085 放积木,积木不能旋转(注意长宽方向),求最多铺的面#include #include boolgmaxmmaxn;

31、void bool if (fcurtbfcurtb)fcurtb=num; if (y=m) return;if (y0)for if(y0|bxi00)continue; ok=true; ta=a; tb=b;for if(axij0|if (y0)for if(y0|bxi00)continue; ok=true; ta=a; tb=b;for if(axij0|if(!(ta&(axij*fny+j-2) else ok=false; break;if(!(tb&(bxij*fny+j-ok=false;if for for (m=3;mmaxm;m+)for(s=i=0;im;i+

32、)curt=0;num=1;a=(1(m*2)-1;for (n=1;n=100;n+) curt=1-curt; for (i=1;i=num;i+)for for (n=1;n=100;n+) while(scanf(%d%d,&n,&m)=2)return 题目类型总server(xx 集?) 转移过程中需要 p(dfsmapple tree 两种状态互相倒 (go,back)树的最小点覆#include return 题目类型总server(xx 集?) 转移过程中需要 p(dfsmapple tree 两种状态互相倒 (go,back)树的最小点覆#include b)returnv

33、oid for (i=1;i=n;i+)scanf(%d:(%d),&a,&m); for (j=1;j=m;j+)for (i=1;i=n;i+)scanf(%d:(%d),&a,&m); for (j=1;j=m;j+)l=0;r=1;que1=0;for if(favj=2;i-b=quei; return 树的最大独立点charsamaxl,sbmaxl; bool void getnum(charif(g.find(s)=g.end() return bool ifcharsamaxl,sbmaxl; bool void getnum(charif(g.find(s)=g.end()

34、 return bool iffor (i=2;i=n;i+)if if(fquei0=fquei1)returnreturn memset(e,-for(i=1;in;i+)a=getnum(sa);b=getnum(sb); l=0;r=1;que1=root;faroot=root; for memset(e,-for(i=1;in;i+)a=getnum(sa);b=getnum(sb); l=0;r=1;que1=root;faroot=root; for if(favj=2;i-b=quei; coutans ;(uni)coutYesendl;else树的节点只与一个server

35、 (xx#include b)returnvoid for (i=1;in;i+)l=0;b)returnvoid for (i=1;in;i+)l=0;r=1;que1=1;for if(favj=1;i-b=quei; for if(vj!=a)fb0=min(fb0,sum-if (n=-1)return pku1947 删最少的边得到一个含p个节点的子#include 降维b)returnif (n=-1)return pku1947 删最少的边得到一个含p个节点的子#include 降维b)returnb)returnvoid fs=n; fs+1=dx;for(i=ex;i0;i=

36、nexti) (j=0;j=pre;j+) tmpj=fs+j; (j=pre+1;j=pre+add;j+)tmpj=n; if for if (j=0;j=p)ans=min(ans,fs+p+1); return pre;memset(e,-for (i=1;i=p)ans=min(ans,fs+p+1); return pre;memset(e,-for (i=1;in;i+)for if(idi=0)root=i; return pku3140m 的。 树分成两半,节点权和差最#include long long void long long for (i=1;i=n;i+) for

37、 (i=1;i=m;i+) long long for (i=1;i=n;i+) for (i=1;i=m;i+) l=0;r=1;que1=1;for if(favj=2;i-b=quei; f(Case%d:return tsoi3_4 所有点间距离的平均#include b)returnvoid tsoi3_4 所有点间距离的平均#include b)returnvoid double ans;for (i=1;in;i+)l=0;r=1;que1=1;fa1=1;for if(favj=2;i-b=quei;a=fab; return 在权值非负的情况下包括尽量多的叶子节点#inclu

38、de 降维for(i=n;i=2;i-b=quei;a=fab; return 在权值非负的情况下包括尽量多的叶子节点#include 降维void for (i=1;i=n-m;i+) for l=0;r=1;for (i=1;i=n-m;i+) for l=0;r=1;que1=1;fa1=1;for if(favj0)for(i=1;i=n;i+) for(j=1;j=n;j+) fij=-(+1;i=0;j-if(faj-for(k=sb;k=0;k-if (fbk-maxx) if(f1i=0)return dfs 降#include void fs=0;if return 1;fo

39、r dfs 降#include void fs=0;if return 1;for (j=0;j-for if (fs+pre+1+k-maxx) (j=0;j=pre+add;j+)for(i=1;i=pre;i+)fs+i-=w; return pre;for (i=1;i=n-m;i+)for (j=1;j=k;j+) for(;i=0;i-if(fi=0)coutiendl;break; return 0;pku2486appletree 两种状态互相for (i=1;i=n-m;i+)for (j=1;j=k;j+) for(;i=0;i-if(fi=0)coutiendl;brea

40、k; return 0;pku2486appletree 两种状态互相推导#include b)returnb)returnvoid memset(e,-for(i=1;i=n;i+)scanf(%d,&ci); for (i=1;in;i+)l=0;memset(e,-for(i=1;i=n;i+)scanf(%d,&ci); for (i=1;in;i+)l=0;r=1;que1=1;for if(favj=2;i-b=quei; for (s=m;s=0;s-) for(j=0;j=2)return using string sa,sb; char smaxl; istringstrea

41、mst;b)returnvoid getnum(stringif(list.find(s)=list.end() string sa,sb; char smaxl; istringstreamst;b)returnvoid getnum(stringif(list.find(s)=list.end() return if(s0=#)break; memset(e,-for (i=1;i=n;i+)if (idi=0) l=0;r=1;que1=n;fan=0; for if(favj0)for (i=1;i=n;i+)for(j=1;j=2;i-b=quei;a=fab; for (j=n;j

42、=0;j-)for(k=j-1;k=0;k-if (fakmaxx & fbj-kmaxx) for (i=m+1;in;i+) return 拓扑序Hdu2437有向无环图单起点多终点路线为 K for (i=m+1;in;i+) return 拓扑序Hdu2437有向无环图单起点多终点路线为 K 的倍数地最短的路线Fij I 个点路径长度%k=j #include char strmaxn; bool visitmaxn;void void for (if(!visitvj)dfs(vj);voidtopsoft() for (if(indi=0)voidtopsoft() for (if

43、(indi=0)for (i=1;i=m;i+) for (i=1;i=n;i+)if(toplisti=s)break; for (;i0;j=nextj) for (k=0;kmod;k+)if ans=-for if(stri-1=P&if(ans=-1|fi0ans) if (ans0)f(Case%d:%d%dn,ca,-1,-else f(Case%d:%dreturn Hdu2452 Navy maneuvers 有向无环图,两个船长轮流领航,问拿到的不会超过fminfmaxf #include else f(Case%d:%dreturn Hdu2452 Navy maneuv

44、ers 有向无环图,两个船长轮流领航,问拿到的不会超过fminfmaxf #include boolvisitmaxn; void void void for (if(!visitvj)dfs(vj);for(i=1;i=n;i+)scanf(%d,&gi); memset(e,-if (indi=0) if(s=0)s=i;for(i=1;i=1;i-) if(minfb0|maxfb0)while(1)coutWa!0;j=_nextj)if(maxfuj=f)else return 四边形不等一般性结论:fijsi-若 石子合#include 四边形不等一般性结论:fijsi-若 石子合

45、#include b)returnb)returnwhile(ca-for(i=1;i=n;i+)for(i=n+1;i=n*2;i+)ai=ai-n; for(i=1;i2*n;i+)sai=sai-1+ai; for(i=1;i=2*n;i+)sii=i; for (d=2;d=n;d+)for(i=1;i=2*n-d;i+) for(k=sij-1;k=i & kj)if(fik+fk+1j+saj-sai-for (i=1;i=n;i+) for(i=1;i=2*n;i+)sii=i; for (d=2;d=n;d+)for(i=1;i=2*n-d;i+) for(k=sij-1;k=

46、i & kj)iffor (i=1;i=n;i+) for(i=1;i=2*n;i+)sii=i; for (d=2;d=n;d+)for(i=1;i=2*n-d;i+) for(k=sij-1;k=i & kj)if(fik+fk+1j+saj-sai-for (i=1;i=n;i+) return pku1160 n 个村子要建p 个邮局(一维情况fij=min(fi-1k+disk+1j) #include for(i=1;i=n;i+)scanf(%d,&ai); for for for(i=1;i=n;i+)fkki=w1i; for (i=2;i=1;j-for(k=sj;k=i-

47、1 & kj)if (f1-for(i=1;i=n;i+)fkki=w1i; for (i=2;i=1;j-for(k=sj;k=i-1 & kj)if (f1-return 0;单调队题目类型总pku2823hdu2430gx=isi%p=xi,dp=mingi-o(n) 的时间从fcurtfnextpku2373fi=max(fi-2*b.fi-2*a)+1izoj3031si,di,swi,fijij滚 动 降 维 ,pku1821nmsi,pi;fijij axfi-1k+g(k,j),k=j)k1,k2k1;for(i=1;i=n;i+)scanf(%d,&ai); q1.clear

48、(); q2.clear(); while(!q1.empty()&aiaq2.back() while(!q1.empty()&q1.front()=i-m)q1.pop_front(); while(!q2.empty()&q2.front()=i-m)for(i=m;i=n;i+)pr for(i=m;i=n;i+)pr return 0;f(%d%c,aansi0,i=n?n:f(%d%c,aansi1,i=n?n:Pku2823 数using void &(ai-aqpush-while(push!=pop&qpop=i-m)f(%d%c,aqpop,i=n?n:for(i=1;i=

49、n;+i)Pku2823 数using void &(ai-aqpush-while(push!=pop&qpop=i-m)f(%d%c,aqpop,i=n?n:for(i=1;i=n;+i)scanf(%d,&ai); solve(-预处理 gx=i 表示 i,dp 令fi using long void if while(push!=pop&gigqpush-1)push-; if while(push!=pop&qpopi-k) if(push!=pop)else long void if while(push!=pop&gigqpush-1)push-; if while(push!=

50、pop&qpopi-k) if(push!=pop)else long ans;for(i=1;i=n;i+) si=si-if (gx0)for(i=1;i=0& if (si-f(Case%d:return o(n)using void if(ai=-2)push=pop=1; if (ai=0)ai-=i;while(push!=popreturn o(n)using void if(ai=-2)push=pop=1; if (ai=0)ai-=i;while(push!=pop&aiaqpush-while(push!=pop&qpopi-l)pop+; if (push!=pop)

51、gi=aqpop+i; /char c;for for (j=1;j=1;j-)an-j+1=fji; for(j=n;j=1;j-)fji=gn-case 2:for for(j=1;j=n;j+)aj=fji; for(j=1;j=1;j-)am-j+1=fij; for(j=m;j=1;j-)fij=gm-case 4:for for(j=1;j=m;j+)aj=fij; for(j=1;j=m;j+)for (i=1;i=n;i+) for(j=1;jans)ans=fij; returnpku2373fi=max(fi-2*b.fi-2*a)+1 i#include #include

52、 booloperator(nodea,nodeb)pku2373fi=max(fi-2*b.fi-2*a)+1 i#include #include booloperator(nodea,nodeb)returna.lb.l;b)returnvoid for(i=0;i=0)while(push!=pop&fifqpush-1)push-; while(push!=pop&qpopi-(b-a)if(fi+a!=-2&push!=pop)if(n%2)cout-1endl;return0; for (i=1;i=m;i+)n=n/2; r=0;for (i=1;i=m;i+)l=max(r-

53、for(j=l+1;jr;j+)fj=-if(fn0)cout-1endl;elsecoutfnendl; return 0;zoj3031 邮件分发si,di,for(j=l+1;jr;j+)fj=-if(fn0)cout-1endl;elsecoutfnendl; return 0;zoj3031 邮件分发si,di,swifijj滚动降维,#include using longlong while(ca-for (i=1;im)elsewhile(1)couterror! iendl;return pku1821n 个工人刷长为m elsewhile(1)couterror! iendl

54、;return pku1821n 个工人刷长为m 的墙fijij #include #include booloperator(nodea,nodeb)returnfor (i=1;i=n;i+) for (i=1;ifkj)fkj=fkj-1; if (j=gi.s)while(push!=pop&j-qpop+1gi.l)if(push!=pop&j=gi.s&jfkj) fkj=x;return 0;pku1765 算每个屋檐的降雨量,扫除线while(push!=pop&j-qpop+1gi.l)if(push!=pop&j=gi.s&jfkj) fkj=x;return 0;pku1

55、765 算每个屋檐的降雨量,扫除线#include #includeusing struct double k;b)returnb)returndoublereturnrfnum.y1+rfnum.k*(x-void j=rti;rti=ltj;void j=lti;lti=rtj;void if lti=0;if(y(tpi,now)y(x,now)insert(rti,x,now);if(auxrtiauxi) elseinsert(lti,x,now);if(auxltiauxi)void void j=lti;lti=rtj;void if lti=0;if(y(tpi,now)y(x

56、,now)insert(rti,x,now);if(auxrtiauxi) elseinsert(lti,x,now);if(auxltiauxi)void if(lti=0|rti=0)if(lti=0)i=rti;elsei=lti;returnif(auxltiauxrti)e_r(i);else e_l(i);do_remove(lti);void if(tpi=x)do_remove(i);returnif(y(tpi,now)0)i=rti; return i;if(y(tpi,now)0)t=bigest(lti); return t;cmp(nodea,nodeb)return

57、b)returnelse if(lti0)t=bigest(lti); return t;cmp(nodea,nodeb)returnb)returnfor (i=1;i=n;i+) rfi.k=1.0*(rfi.y2-rfi.y1)/rfi.w=rfi.next;rfi.id=i;nx+m=rfi.x1;-for(i=1;i=n;i+)void for(i=1;i0)rft.w+=now-(t=l;l=n&rfl.x1=now;l+)insert(root,l,now); (l=t;l=n & rfl.x1=now;l+)if(rfl.y1=rfl.y)(t=r;r=n&for(r=t;r0

58、) if(di=0)if (v0)if(dv=0)void if (v0) if(di=0)if (v0)if(dv=0)(i=1;i=n;i+)(i=1;i=n;i+)return 静态平衡二叉树 #include #include using maxn=101000amaxn,smaxnnum,n,kstructs uqmaxn struct value ; treemaxn*3;c ; if(ab)treek.node_count=0; treek.tree_count=0; return 0 ;c = (a+b)/2 ; treek.value=uqc.d;= = +=build(2*

59、k,a,c-+= struct value ; treemaxn*3;c ; if(ab)treek.node_count=0; treek.tree_count=0; return 0 ;c = (a+b)/2 ; treek.value=uqc.d;= = +=build(2*k,a,c-+= returntreek.tree_count,return)return)return tree2*k.tree_count;void if(treek.tree_count=0)return; if(treek.value=x)treek.node_count-; else if (treek.v

60、aluex) del_node(2*k,x);else void i,diff=0longlongsum=0,void i,diff=0longlongsum=0,ans; for diff += ai; ans=(longlong)n*(n+1)/2-sum; cs,average;cincs ; while(cs-);ll rr =00 0 ;for scanf(%d,&ai)ai=ai-averagesi=si-1+aisort(s+1,s+1+n); num = 0 ;for if(j1&sj=sj-1) num+ uqnum.d=sj; uqnum.s = 1 ;uqnum.s+re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论