上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页
摘要: 平面中n个点,求每个点左下点的数量,直接上树状数组,题目数据以y为第一关键字,x为第二关键字升序排列了,所以只需从1到n依次插入横坐标,统计之前的小于当前点的横坐标的点数即可,注意树状数组上限是坐标最大值,不是n,同时坐标还有0的可能,所以都加1才行。View Code 1 program pku2352(input,output); 2 var 3 c : array[0..40000] of longint; 4 x,y,answer : array[0..40000] of longint; 5 n,maxx : longint; 6 pro... 阅读全文
posted @ 2012-04-15 19:35 Codinginging 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 有一个天平,天平左右两边各有若干个钩子,总共有C个钩子,有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数。(距离小于15,重量小于25,钩子和钩码都少于20个)其中可以把天枰看做一个以x轴0点作为平衡点的横轴。别看数据小,搜索只能过3个点,那方案数巨多无比,要用int64。定义平衡度:当前所挂砝码分别乘其坐标的和,很明显平衡度=0时满足条件。用f[i,j]表示当前挂到第i个钩子,平衡度为j的方案数,f[i,j]=xigema{f[i-1,k-x[k]*y[i]]},y记坐标,x记重量。View Code 1 program balance(input,output); 2 const. 阅读全文
posted @ 2012-04-15 17:15 Codinginging 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 需要一个这样的数据结构,每次能修改矩阵中的某一个值,还可以查询某个子矩阵的权值和。二维树状数组没压力啊。View Code 1 program pku1195(input,output); 2 var 3 c : array[0..1500,0..1500] of int64; 4 n,kk : longint; 5 function lowbit(x: longint ):longint; 6 begin 7 exit(x and (-x)); 8 end; { lowbit } 9 procedure insect(x,y,w :longint );10 va... 阅读全文
posted @ 2012-04-15 17:08 Codinginging 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 给你一颗苹果树,树的主干设为1,每一个分支设为一个数,一直到N,代表这颗苹果树。每个分支上面只能最多有一个苹果。下面是两种操作,Q 和CC j 的意思是如果 j 这个枝上面有苹果就摘下来,如果没有,那么就会长出新的一个Q j 就是问 j 这个叉上面的苹果总数。先一遍DFS确定树的形态,再一遍DFS求出每各节点标号后作为根的子树标号范围,有DFS性质,这个范围一定连续,接下来问题转化为在某一个点加一或减一,查询区间和,用树状数组完成。View Code 1 program pku3321(input,output); 2 type 3 node = ^link; 4 ... 阅读全文
posted @ 2012-04-14 11:54 Codinginging 阅读(255) 评论(0) 推荐(1) 编辑
摘要: 裸的求最近公共祖先,LCA-->RMQ,没什么大问题,只不过标号不再完美,需要在深度序列中找最小值,最后再对应回去。View Code 1 rogram pku1330(input,output); 2 type 3 node = ^link; 4 link = record 5 goal : longint; 6 next : node; 7 end; 8 var 9 tree : array[0..31000] of node; 10 eurl : array[0... 阅读全文
posted @ 2012-04-14 11:02 Codinginging 阅读(185) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页