上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 21 下一页
摘要: 种类并查集的经典题目,和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 ... 阅读全文
posted @ 2012-03-14 16:45 Codinginging 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 这道题是一道经典的搜索剪枝题,每次听搜索的课总有这道题,剪枝思想主要就是最优化和可行性。最优化:当前面积+下面的最小面积>当前解可行性: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 ... 阅读全文
posted @ 2012-03-14 16:30 Codinginging 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 给定n个人的坐标,第一个人必须站在1 处,最后一个人站在L 处,其次让距离尽可能的相同。因此任意两个相邻的人相距必须与(L-1)/(n-1)【使用整数除法】相差最多为1,而且距离为(L-1)/(n-1)(整数除div)的个数尽可能的多,一个人由x移动到y的费用为|x-y|,求最小费用。问题转化为给定线段和最优长度,在最优长度最多的前提下费用最小,进一步说,就是在一堆最优长度中插入剩余的所有1.f[i,j]表示在前i个人就位后插入了j个(最优长度+1)的线段的最优解,DP方程直接看代码就行了,坐标式最好自己推导一下。View Code 1 program sunglasses(input,ou. 阅读全文
posted @ 2012-03-11 17:33 Codinginging 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 一开始有一个数n(1<=n<=1000000),两个人轮流对n 进行操作。每次可将n减去它的最大或最小的非零数位。现在给定G个N,问先手赢还是输。一道博弈问题,脑子一定要清晰,别想着想着自己乱了,那就太惨了。必败态和必胜态很好找,考试时就写了一个记忆化的博弈搜索树,结果悲剧的栈崩了两个点。其实可以转化成DP,f[i]为true表示i必胜,则f[i]=(not f[i-min[i]]) or (not f[i-max[i]]),实现很简单了。粘上我的博弈搜索记忆树··········& 阅读全文
posted @ 2012-03-11 17:09 Codinginging 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 本题谁都会做,在这里分析一下各个方法。1.按照说明模拟,不再累述。2.pascal同学有内置函数swap,但要注意数据类型了,longint不够2^32,int64不符合函数要求,只能用cardinal。3.最有水平的解法,位运算(n shr 16) or (n shl 16) 就是结果了。View Code 1 program p1201(input,output); 2 var 3 x:dword; 4 begin 5 assign(input,'p1201.in');reset(input); 6 assign(output,'p1201.out');re 阅读全文
posted @ 2012-03-11 16:09 Codinginging 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 21 下一页