bzoj2783
    
                
摘要:由于路径的深度是升序的所以我们可以考虑用前缀和的思想,用sum维护点到根路径上节点和对于每个点x存在路径和为s即这个点到根的路径上存在y,使sum[x]-sum[y]=s这显然是可以二分的 1 type node=record 2 po,next:longint; 3 end...
        
阅读全文
                    posted @ 
2014-10-26 20:02 
acphile
        
阅读(125) 
         
        推荐(0)     
                 
                
                
    bzoj3709
    
                
摘要:首先明显会想到贪心对于那些怪物回血比耗血多的,我们显然应该先打耗血少的那些回血比耗血多的怎么办呢?由于不管怎么打(假设体力负数了还能打),最终体力是一定,我们从最终体力倒推,相当于先吃药掉血,打怪物回血,这样就转变为第一种情况了显然我们因先打带的药回血少的,即从正序想,我们因先打所带药物回血多的怪物...
        
阅读全文
                    posted @ 
2014-10-26 19:59 
acphile
        
阅读(208) 
         
        推荐(0)     
                 
                
                
    bzoj3043
    
                
摘要:这道题完全没想出来,引自http://blog.csdn.net/willinglive/article/details/38419573的题解对于带有“将一段区间内的每个数全部加上某个值”这种操作的题目,通常考虑差分原数列以简化情况,将对一段区间的操作转化为对某两个特定数的操作。我们定义d1=a1...
        
阅读全文
                    posted @ 
2014-10-26 19:45 
acphile
        
阅读(201) 
         
        推荐(0)     
                 
                
                
    bzoj1978
    
                
摘要:朴素的算法是O(n2logn)观察这个算法,似乎很难在进行优化我们就要换一种思路考虑到一个数的约数总不是很多,穷举约数也是可以在O(sqrt(x))的时间内完成的并且注意到,能否继续往下选数,只在于最后一个被选中的数设f[x]当前最后一个选中的数和上一个可以被选中的数的gcd为x时最多选的数的个数顺...
        
阅读全文
                    posted @ 
2014-10-26 17:31 
acphile
        
阅读(108) 
         
        推荐(0)     
                 
                
                
    bzoj3505
    
                
摘要:ans=C((n+1)*(m+1),3)-三点一线的情况横线竖线我们可以先去掉然后考虑斜线,由于对称性我们只要考虑斜率大于0的即可有一个很显然的结论,但两点坐标差为x,y时,这条线段上的点数为gcd(x,y)我们设左下角点为(0,0),则两端点坐标差为x,y的线段有(n-x+1)*(m-y+1)要注...
        
阅读全文
                    posted @ 
2014-10-26 17:16 
acphile
        
阅读(119) 
         
        推荐(0)     
                 
                
                
    bzoj1306
    
                
摘要:非常好的一道搜索题首先没有别的好办法就只能搜,基于对称性我只要搜对角线上半部分即可然后有些惯用的剪枝啦什么的,具体见程序然后代码很短,然后TLE了(但好像也有人过了)然后就不知道怎么优化了,看到CLJ大神的空间发现这道题是可以记忆化搜索的orz首先当搜索完某个队伍的胜负情况后,观察剩下的队伍已确定的...
        
阅读全文
                    posted @ 
2014-10-26 16:58 
acphile
        
阅读(278) 
         
        推荐(0)     
                 
                
                
    bzoj1816
    
                
摘要:这道题不是很难,二分答案+判定即可注意在一套牌中Joker只能用一次 1 var a:array[0..51] of longint; 2 mid,l,r,n,m,i,ans:longint; 3 4 function check(x:longint):boolean; 5 var i,t:...
        
阅读全文
                    posted @ 
2014-10-26 16:39 
acphile
        
阅读(182) 
         
        推荐(0)     
                 
                
                
    bzoj1260
    
                
摘要:很容易脑补出来的区间dp O(n3)的var f:array[0..51,0..51] of longint; i,n,j,l,k:longint; s:string;function min(a,b:longint):longint; begin if a>b then exit(b) el...
        
阅读全文
                    posted @ 
2014-10-26 16:31 
acphile
        
阅读(122) 
         
        推荐(0)     
                 
                
                
    bzoj1071
    
                
摘要:朴素的做法显然是O(n3)的考虑优化,我们将约束条件变形为A*h+B*v=minv的一定还满足条件然后我们只要先对A*h+B*v排序,然后穷举minh,然后扫一遍即可O(n2)的算法很显然,我正好卡着时限过去的……但这道题的本意肯定是有O(nlogn)的算法,求教导 1 type node=reco...
        
阅读全文
                    posted @ 
2014-10-25 22:58 
acphile
        
阅读(237) 
         
        推荐(0)     
                 
                
                
    bzoj2120 2453
    
                
摘要:明显的数据结构题这道题的特殊性在于n只有10000,修改的操作只有1000那么就是说即便是O(n)的修改也没有太大的问题,只要常数写小一点即可考虑到以前对同色点的处理pre[i]表示与这个位置同色的前一个位置对于一段区间l,r,如果区间中位置i,满足pre[i]j) then 17 be...
        
阅读全文
                    posted @ 
2014-10-25 22:40 
acphile
        
阅读(130) 
         
        推荐(0)     
                 
                
                
    bzoj1832
    
                
摘要:其实这道题是和bzoj1787一样的但我用bzoj1787MLE了,于是正好练一下树上倍增 1 type node=record 2 po,next:longint; 3 end; 4 5 var w:array[0..1000010] of node; 6 ...
        
阅读全文
                    posted @ 
2014-10-25 22:12 
acphile
        
阅读(205) 
         
        推荐(0)     
                 
                
                
    bzoj1303
    
                
摘要:首先找到b的位置x,要求满足b为中位数的数列把比b大的设为1,比b小设为-1则数列满足条件则x 左边的的和+x右边的和=0然后应该就很好搞了 1 var a,l,r,s:array[0..200010] of longint; 2 i,n,m,x,k,ans:longint; 3 begin...
        
阅读全文
                    posted @ 
2014-10-20 18:23 
acphile
        
阅读(156) 
         
        推荐(0)     
                 
                
                
    poj1150
    
                
摘要:这道题告诉我们递推一定要慢慢细细的推Pmn=n!/m!,我们可以先考虑n!的最后一位是什么首先最后一位非0位我们首先想到把0都干掉也就是先把2和5提出来,这两个其实是同样的方法对于N!中有多少个因数2 f(n)=f(n div 2)+ n div 2这个不难想提出2和5之后剩下来的数我们只要考虑末位...
        
阅读全文
                    posted @ 
2014-10-17 22:06 
acphile
        
阅读(139) 
         
        推荐(0)     
                 
                
                
    poj1637
    
                
摘要:混合图欧拉回路首先先明确基本概念连通的无向图存在欧拉回路当且仅当不存在奇点连通的有向图当且仅当每个点入度=出度这道题我们显然应该当作连通的有向图来做这个问题的困难之处在于我不知道应该从无向边的什么方向来走那我们先假定一个走向,然后就变成了一个完全意义上的有向图,然后我们在进行调整假定完方向后,我们就...
        
阅读全文
                    posted @ 
2014-10-17 21:47 
acphile
        
阅读(145) 
         
        推荐(0)     
                 
                
                
    poj3519
    
                
摘要:凡是差分约束系统的题目都是转化为d[j]-d[i]j 边权为w[i,j]对于这道题,要求d[n]-d[1]尽可能的大设d[i]为相对差,d[1]=0,我们只要跑1-->n的最短路即可(为什么是最短路呢?实在不明白简单举一个例子即可)由于这道题边不存在负权,所以我们用dij+heap更合适 1 co...
        
阅读全文
                    posted @ 
2014-10-17 21:21 
acphile
        
阅读(165) 
         
        推荐(0)     
                 
                
                
    poj2151
    
                
摘要:求每只队伍都回答出题目,且至少有一只队伍回答出n道题的概率存在性问题我们可以转化为任意性问题用P(每支队伍都回答出题目)-P(每只队伍回答的题目数小于n)然后我们可以递推求解 1 var f:array[0..1010,0..35,0..35] of double; 2 p:array[0....
        
阅读全文
                    posted @ 
2014-10-17 21:12 
acphile
        
阅读(129) 
         
        推荐(0)     
                 
                
                
    poj2954
    
                
摘要:水题,先用叉积求三角形面积然后求三边上的点(由公约数上点)a然后用pick定理S=a+b/2-1就可以求出内部的点数了 1 var x,y,xx,yy,a1,a2,a3,x1,x2,x3,y1,y2,y3:longint; 2 s,ans:double; 3 4 function gcd(...
        
阅读全文
                    posted @ 
2014-10-17 21:06 
acphile
        
阅读(192) 
         
        推荐(0)     
                 
                
                
    bzoj1863
    
                
摘要:白书上的题目这里唯一要说一下的就是,二分答案不难想到,怎么构造答案的合理性非常值得注意 1 var a,b,d:array[0..20010] of longint; 2 n,l,r,m,ans,i:longint; 3 4 function max(a,b:longint):longint;...
        
阅读全文
                    posted @ 
2014-10-17 20:56 
acphile
        
阅读(169) 
         
        推荐(0)     
                 
                
                
    bzoj2002
    
                
摘要:这道题学习了一种简洁的解决一些数据结构题的方法——分块法这道题方法很多,但分块写起来只有1kb左右,非常的简洁(但不是非常的高效)首先很容易思考到一种暴力的做法,从后往前推,很容易搞出每个点会弹几次弹出,这样询问是O(1),但修改一个弹力系数必须把之前会弹到这个点的步数都要修改,因此我们使用分块优化...
        
阅读全文
                    posted @ 
2014-10-17 20:49 
acphile
        
阅读(143) 
         
        推荐(0)     
                 
                
                
    bzoj1389
    
                
摘要:比较有意思的一道题初看肯定是dp一类,但好像没什么思路,先令p=1-p q=1-q如果我们用常见的f[i]到第i次试验最大利润的话我们发现不好转移,因为影响因素不仅有价格,还有数量考虑到原料总量一定,我们考虑用c[i]表示到第i次实验最大利润率不难发现第m次试验,最大利润率一定是a和b那个较大的边界...
        
阅读全文
                    posted @ 
2014-10-17 20:03 
acphile
        
阅读(166) 
         
        推荐(0)     
                 
                
                
    bzoj3631
    
                
摘要:其实这道题其实可以转化为这样一个问题给定n-1对点,将这两点x,y间简单路径上的点(包括起点终点)权值+1(最后再把除了起点外的点的权值-1,注意终点没糖吃)求每个点的权值首先想到的是先找LCA然后暴力的对权值加,显然这样效率不够好想到了树状数组完成区间修改和单点求值,是先将[l,r]中a[l]++...
        
阅读全文
                    posted @ 
2014-10-17 19:46 
acphile
        
阅读(131) 
         
        推荐(0)     
                 
                
                
    bzoj1257
    
                
摘要:这道题初看确实没什么思路,感觉之前的数论知识都用不上,只好自己找规律首先当n>=k 这部分是很容易直接算出的下面我们先来尝试这穷举i,不难发现当穷举i时,总存在一段连续的除数,k div i=p定值设这段是i~j,则这部分的的余数和signma(k-p*q) (ik then24 begin25...
        
阅读全文
                    posted @ 
2014-10-16 22:49 
acphile
        
阅读(203) 
         
        推荐(0)     
                 
                
                
    bzoj1041
    
                
摘要:基于圆的对称性,我们只需要考虑第一象限的整点即可满足条件的x,y都是整数数学上这类问题我们通常用一个量表示另一个量y^2=(r-x)(r+x) (r-x)(r+x)要是完全平方数令d=gcd(r-x,r+x)则y^2=d^2*a*b a=(r+x)/d b=(r-x)/d;不难发现此时(a,b)=1...
        
阅读全文
                    posted @ 
2014-10-16 22:31 
acphile
        
阅读(255) 
         
        推荐(0)     
                 
                
                
    bzoj1560
    
                
摘要:首先这种题目肯定是要先排序,以x为第一关键字,y为第二关键字不难想到O(n2)的dp,下面显然要优化不难发现,由于两点的耗费是坐标差的平方的和,不带根号,因此,不难发现一个很有用的性质,如果从A点能到C点,C点到B,这样走C点一定比不走C点优于是不难想到我们要维护y坐标上的上x最大的点,这个点一定是...
        
阅读全文
                    posted @ 
2014-10-14 22:36 
acphile
        
阅读(238) 
         
        推荐(0)     
                 
                
                
    bzoj1475
    
                
摘要:明显的二分图最大独立点权集ans=总点权-最小割(最大流) 1 const dx:array[1..4] of longint=(0,0,-1,1); 2 dy:array[1..4] of longint=(1,-1,0,0); 3 inf=10000007; 4 5 type no...
        
阅读全文
                    posted @ 
2014-10-07 22:03 
acphile
        
阅读(148) 
         
        推荐(0)     
                 
                
                
    bzoj2064
    
                
摘要:这道题初看真的毫无思路,又是合并又是分裂的 但实际上我们知道,当两组和相等的时候才能由一组变成另一组 我们将初始状态和最终状态划分成若干对,每对中的两组元素和相等的 不难发现,最少步骤=n+m-2*对数 因为在一对不能再划分的组中,具有k个元素变换到具有j个元素所花的最短步骤是k+j-2 于是问题就
        
阅读全文
                    posted @ 
2014-10-07 21:54 
acphile
        
阅读(280) 
         
        推荐(0)     
                 
                
                
    bzoj1853 bzoj2393
    
                
摘要:两题是类似的,这里说一下bzoj1853首先我们求出所有的幸运号码,注意如果存在x是y的倍数则x不算在内,避免之后重复计算下面我们就要统计幸运号码的倍数了,这显然是要用到容斥原理的但是幸运号码很多,如果直接暴力找几个幸运号码的公倍数做容斥原理弄会TLE的;因此我们想到在搜索中剪枝,如果几个幸运号码的...
        
阅读全文
                    posted @ 
2014-10-07 21:34 
acphile
        
阅读(1067) 
         
        推荐(0)     
                 
                
                
    bzoj1053
    
                
摘要:不难发现,要让约数尽可能多,那么素因子越小的的指数一定越大可能的素因数的种类也不超过10种然后直接暴搜即可 1 const p:array[1..10] of longint=(2,3,5,7,11,13,17,19,23,29); 2 var n,ant,ans:int64; 3 procedur...
        
阅读全文
                    posted @ 
2014-10-07 21:19 
acphile
        
阅读(114) 
         
        推荐(0)