摘要:
折叠的定义如下: 1. 一个字符串可以看成它自身的折叠。记作S @ S 2. X(S)是X(X>1)个S 连接在一起的串的折叠。记作X(S)即SSSS…S(X 个S)。 3. 如果A @ A’, B @ B’,则AB @ A’B’ 例如,因为3(A) = AAA, 2(B) = BB,所以3(A)C2(B) @ AAACBB, 而2(3(A)C)2(B) @AAACAAACBB 给一个字符串, 求它的最短折叠。一道DP题目,考试的时候在折叠时的转移搞乱了——用f[i,j]表示从i到j折叠后的最短长度,那么f[i,j]=min{f[i,k]+f[k+1,j] x<=k<y f[ 阅读全文
摘要:
种类并查集的经典题目,和NOIP2010里的关押罪犯一个类型,0,1,2表示三个种类,在合并时用类似向量的方法去导公式,其他的模拟操作即可。View Code 1 program pku1182(input,output); 2 var 3 father,r : array[0..50000] of longint; 4 i,n,x,y,answer,k,t : longint; 5 function find(i : longint):longint; 6 var 7 temp:longint; 8 begin ... 阅读全文
摘要:
这道题是一道经典的搜索剪枝题,每次听搜索的课总有这道题,剪枝思想主要就是最优化和可行性。最优化:当前面积+下面的最小面积>当前解可行性:1:当前剩余体积<做完剩余蛋糕需要的最小体积 2:当前剩余体积+做剩余蛋糕能用的最大体积<NView Code 1 program pku1190(input,output); 2 const 3 maxr = 30; 4 maxh = 30; 5 var 6 n,m,answer : longint; 7 minv : array[0..21] of int64; 8 mins ... 阅读全文