上一页 1 ··· 4 5 6 7 8 9 下一页
摘要: 有N个数,Q个操作(N<=1000000,Q<=3000)。操作为两种:1、L-R区间中所有数加一个W;2、询问L-R区间中所有数>=C的个数。(每次操作给出W或C)本题由于询问操作,我们直接用线段树或伸展树无法在区间中直接找出>=某个数的所有数来。一种解决的方法是:对于原序列建一颗splay,询问时找出区间后,对区间所在子树从子树根开始进行搜索,若当前子树所有节点的最小值>=C,则加上子树大小;否则递归调用左右子树。对于单次操作,修改是O(logn)的,但询问最坏情况就是O(n)的,所以总复杂度为O(NQ),与暴力无二异。我们也可以尝试用树套树,但由于修改也是在 阅读全文
posted @ 2011-10-04 21:24 FancyCoder0 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 作为一种特殊的网络流——费用流,是在原最大流的基础上,每条边给个权(费用),并让你使得每条边的流量*费用的总和最小。一种基于贪心的方法就是每次都找最小费用的路径增广。所以就有了SPFA流:每次对图SPFA一遍,按最小费用的路径增广即可。而可以看出,SPFA每次只增广一遍,感觉是十分浪费的。于是,就有zkw很牛B的发明了zkw流。其思路与最大流的ISAP算法类似。在我看来,起码zkw流是不会慢于SPFA流的。对于费用很小很集中,瓶颈容量小但总容量大的图,因为zkw流的多路增广的优势,其效率远远快于SPFA流。而我在今天之前,一直犯了一个错误,使zkw流变得比较慢(或者是很慢)。每次DFS时,对于 阅读全文
posted @ 2011-08-24 21:38 FancyCoder0 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-08-15 18:46 FancyCoder0 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 【摘记】数论题目。ACM。细节需考虑完整。【题目描述】给定N和P,以及F(1)=A,F(2)=B,F(i)=F(i-1)*F(i-2) (i>=3)。求F(n) mod P。1≤n≤1000000000, 1≤P≤1000000, 0≤a, b0 但a^(b mod φ(p)+φ(p)) =0,所以b0 then begin getlong:=i-hash[tmp];exit;end; hash[tmp]:=i; //writeln(s,' ',tmp); end;end;beginassign(input,'bruteforce.in');assign( 阅读全文
posted @ 2011-08-03 16:20 FancyCoder0 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 树有很多优美的性质,这题就是一个很好的例子.在树上找出一条不超过给定长度的路径,使得所有点到这条路径的距离的最大值最小.可以证明,这条路径必定在树的直径上.很像NOIP树网的核.两遍BFS,求出直径后(可能不唯一,但只需一条足够),把直径上所有边的权记录下来,并在原图上把它们改成0,再一遍BFS,求出不是直径上的点离直径的最长距离S’.这样,我们可以二分答案,由于路径只为一条,所以对应到数组中是连续的一段,判断是否可行即可(这里可以用二分查找O(logn),我写了O(n)的朴素),设最小可能值为S.1、若当S’>S,S’不可能增大,即那时那个不是直径上的点一定能覆盖到.2、若当S’<S,S’增 阅读全文
posted @ 2011-08-03 15:53 FancyCoder0 阅读(427) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 下一页