codeforces #268 div2 D
    
                
摘要:对于这道题第一感觉是图论相关然后我们先分析,假设a[i]在A集合需要的元素是a[x],在B集合是a[y]那么假设a[i]在A集合,那必然a[x]也必须在A集合,由于a[y]如果在B集合就没有对应元素,则a[y]也一定在A集合同理,当a[i]在B集合,a[x],a[y]一定也要在B集合对此我们可以分析...
        
阅读全文
                    posted @ 
2014-09-23 21:24 
acphile
        
阅读(147) 
         
        推荐(0)     
                 
                
                
    poj3373
    
                
摘要:其实这道题只告诉了一个事当出现多个满足答案约束条件是,我们可以求一个再求一个,不要一下子全求完前两个条件怎么弄之前已经做过类似的了于是我们可以用记忆化搜索找出最小差异然后配合最小差异来剪枝,搜索出最小答案 1 var a,b:array[0..110] of longint; 2 f:arr...
        
阅读全文
                    posted @ 
2014-09-23 21:11 
acphile
        
阅读(202) 
         
        推荐(0)     
                 
                
                
    bzoj1954  poj3764
    
                
摘要:对于xor有一个非常重要的性质A xor B xor B=A 并且满足交换律和结合律这道题是求无根树上最长的xor路径我们知道,无根树的题目我们都是要想办法转化为有根树来处理当我们确定了一个根,根到每个节点i的xor路径f[i]可知则在树中,任意两个节点ij间的xor路径长度即为f[i] xor f...
        
阅读全文
                    posted @ 
2014-09-23 21:04 
acphile
        
阅读(224) 
         
        推荐(0)     
                 
                
                
    bzoj2743
    
                
摘要:其实和bzoj1878类似只不过要求的是区间内数量多于1个的数字种数其实还是按照bzoj1878做只不过我们是把每一种数字下一个出现的位置+1,并把这个位置置为0 1 var x,y,ans,p,last,a,c,next:array[0..1000010] of longint; 2 ma...
        
阅读全文
                    posted @ 
2014-09-19 22:44 
acphile
        
阅读(226) 
         
        推荐(0)     
                 
                
                
    bzoj1013
    
                
摘要:裸的高斯消元不多说 1 var a:array[0..12,0..12] of double; 2 b:array[0..12] of double; 3 p,i,j,k,n:longint; 4 x:double; 5 6 procedure swap(var a,b:d...
        
阅读全文
                    posted @ 
2014-09-19 22:39 
acphile
        
阅读(138) 
         
        推荐(0)     
                 
                
                
    poj2482
    
                
摘要:(题外话:这题这是ACMer的福利啊……)我非常不擅长做矩形类的数据结构一般来说,二维的问题我们要转化为一维来考虑感觉一般的手法是对一维排序,并且线性扫描这一维,然后用各种数据结构维护另一维上的最优值这道题我们首先对x排序,然后扫描x坐标这时候我们要维护2条扫描线,一左一右(应该就是two poin...
        
阅读全文
                    posted @ 
2014-09-19 22:37 
acphile
        
阅读(577) 
         
        推荐(0)     
                 
                
                
    bzoj3124
    
                
摘要:很好的一道treedp,当然也挺烦的首先不难想到先求出一个直径,然后穷举每条边,看他删除之后直径大小是否会变,变了的话就是必须经过的边下面我们就要想怎么优化,本人语言表达略差,还是配合程序说吧。 1 type node=record 2 point,next:longint; 3...
        
阅读全文
                    posted @ 
2014-09-11 21:45 
acphile
        
阅读(182) 
         
        推荐(0)     
                 
                
                
    poj1935
    
                
摘要:给定起点和要经过的点,求最短路径我发现,关于路径的treedp,设计的关键在于每个节点的状态怎么表示对于这道题,有一种常见的方法是令f[i,1]表示经过这个点且还要回来的路径,f[i,0]表示留在以i为根的子树的某个节点上不回到i的最短路径然后方程就很好设计了,具体见程序 1 type node=r...
        
阅读全文
                    posted @ 
2014-09-11 21:25 
acphile
        
阅读(196) 
         
        推荐(0)     
                 
                
                
    poj3167
    
                
摘要:这道题是一道kmp的扩展版的好题一串匹配一串很容易想到kmp,但是这里的匹配要求的是两个串的名次相同显然名次是会变的,为了方便,我们可以换一种表达对于两个等长的串的相同位置,名次相等就是在它之前比它小的数的个数一样,和它相等的数的个数一样这个我们可以用树状数组维护一下(当然暴力好像也行)然后匹配就行...
        
阅读全文
                    posted @ 
2014-09-11 21:18 
acphile
        
阅读(189) 
         
        推荐(0)     
                 
                
                
    poj2752 bzoj3670
    
                
摘要:2752这是一道关于next函数的题(其实好像也可以用后缀数组暴力搞搞,但大概会超时)根据next[i]=max{j} (s[0..j]=s[i-j..i] j0 do31 begin32 inc(t);33 q[t]:=next[j];34 j:=nex...
        
阅读全文
                    posted @ 
2014-09-11 21:05 
acphile
        
阅读(102) 
         
        推荐(0)     
                 
                
                
    poj2886
    
                
摘要:反素数范围不大,可以直接打表得然后就是模拟移动的过程我们可以用线段树优化,具体明天再说吧 1 const op:array[1..35] of longint=(1,2,4,6,12,24,36,48,60,120,180,240,360,720, 2 840,1...
        
阅读全文
                    posted @ 
2014-09-05 22:43 
acphile
        
阅读(166) 
         
        推荐(0)     
                 
                
                
    poj3294
    
                
摘要:首先后缀数组预处理然后二分答案len很显然,然后考虑怎么判定我们用左右指针顺着名次扫描一下,初始左右指针为1根据LCP(i,j)=min(height[rank[i]+1]~height[rank[j]]) 设rank[i]=len,h[j+1]y[sa[i-1]]) then inc(p); 27...
        
阅读全文
                    posted @ 
2014-09-05 22:41 
acphile
        
阅读(196) 
         
        推荐(0)     
                 
                
                
    poj3709
    
                
摘要:首先我们发现将一段数变为同一个数比间隔着搞肯定优,因为数列是升序的,然后不难得到方程式f[i]=min(f[j]+sum[i]-sum[j]-(i-j)*a[j+1]) (i-j>=m)简单的斜率优化不多说注意这道题最优解有选择范围,也就是说要延迟入队 1 var a,s,f:array[0..50
        
阅读全文
                    posted @ 
2014-09-05 22:24 
acphile
        
阅读(257) 
         
        推荐(0)     
                 
                
                
    poj1849
    
                
摘要:不难发现每条边最多走两次,最少走一次也就是我们要在所有走两次的边中选两条从根出发没有公共边的路径使路径上的边少走一次显然我们找的是最长路径View Code
        
阅读全文
                    posted @ 
2014-09-05 22:16 
acphile
        
阅读(116) 
         
        推荐(0)     
                 
                
                
    bzoj2007
    
                
摘要:首先不难发现海拔高度只能为0或1因为决策是单调的不难发现最优决策一定是划分为海拔为0和1两块,不会出现01相间的情况所以这很明显是一个最小割由于n*n很大,我们必须要用平面图最小割转化为最短路径在我们做1001时,是平面无向图,这里是平面有向图,其实是一样的只要记住以起点终点为对角线划分外面为两个面...
        
阅读全文
                    posted @ 
2014-09-05 22:12 
acphile
        
阅读(167) 
         
        推荐(0)     
                 
                
                
    bzoj3209
    
                
摘要:首先这道题目不难想到将答案转化为这种形式2^s[2]*3*s[3]*…max*s[max]这时候我们要分类讨论,设n的二进制位数为t当1~n中二进制位数小于t时我们可以直接用组合的知识,二进制有i个1一共有c(t-1,i)当1~n中二进制位数等于t时我们数位统计一下即可,具体的当第i位为1时,(从右...
        
阅读全文
                    posted @ 
2014-09-05 22:04 
acphile
        
阅读(184) 
         
        推荐(0)     
                 
                
                
    bzoj2466,poj1222
    
                
摘要:都是简单的异或高斯消元由于bzoj2466要求解得最小和,所以我们最后还要穷举自由元取最优解 1 type node=record 2 po,next:longint; 3 end; 4 5 var f:array[0..110] of longint; 6 a:array[0..1...
        
阅读全文
                    posted @ 
2014-09-05 21:46 
acphile
        
阅读(256) 
         
        推荐(0)     
                 
                
                
    bzoj1016
    
                
摘要:这道题主要利用了最小生成树的两个性质最小生成树每种边权的数目固定不变最小生成树每种边权带来的连通状况一定唯一由于每种边权的只有不到10种,所以直接穷举然后乘法原理即可 1 const mo=31011; 2 type node=record 3 x,y,w:longint; 4 e...
        
阅读全文
                    posted @ 
2014-09-05 21:43 
acphile
        
阅读(186) 
         
        推荐(0)     
                 
                
                
    bzoj2186
    
                
摘要:首先我们看到题目要求的是1~N!内有M!互质的个数 N!>M!,而我们是知道在M!以内与M!互质的数的个数,即phi(M!) 但是M!~N!内与M!互质的数有多少个呢? 对于每个互质的数,如果我们给他都加上M!,那一定也和M!互质 所以1~N!之间与M!互质的数为phi(M!)*(N!/M!) 由于
        
阅读全文
                    posted @ 
2014-09-05 21:39 
acphile
        
阅读(405) 
         
        推荐(0)     
                 
                
                
    bzoj1233
    
                
摘要:首先这道题有一个很重要的贪心就是在保证所有干草堆都能参与搭建的前提下,我们尽量使最底层的宽度小,这样搭起来的的干草堆高度一定是最高的当我们以第i个干草堆为一层,显然最优的情况是找到一个尽可能小的j (i=h[j] (h[j]第j个干草堆为一层在满足上述条件下最小宽度)显然朴素的遍历是O(n2),会超...
        
阅读全文
                    posted @ 
2014-09-05 21:24 
acphile
        
阅读(243) 
         
        推荐(0)     
                 
                
                
    bzoj3524 bzoj2223
    
                
摘要:bzoj3524这是我主席树的第一题什么是主席树呢,就是n棵线段树,每棵线段树记录前缀每个数值(显然想到里离散化)出现次数由于第i棵树相对于第i-1棵树只有logS个点不同(S为数值的种类数)所以总的空间复杂度为O(nlogS),非常好理解;由于每棵线段树的形态都是一样的,所以这些线段树是可以做减法...
        
阅读全文
                    posted @ 
2014-09-03 20:54 
acphile
        
阅读(147) 
         
        推荐(0)