随笔分类 -  好题题解

摘要:随机大法好,乱搞出奇迹。pro:给一个n*m的网格,每个格子上有一种颜色或障碍,求最小的不含障碍的联通块包含至少k个颜色。n,m<=100 color<=n*m k<=5sol:对于color比较小的情况,比如color=k,就是一个裸的斯坦纳树。然后我们每次将所有颜色随机分到k个盒子里,一个盒子都... 阅读全文
posted @ 2014-07-13 18:46 FancyCoder0 阅读(1110) 评论(0) 推荐(2) 编辑
摘要:部分系列题当然是不齐的。JZP系列 JZPKIL 数论,反演,积性函数,伯努利数,(常数优化) JZPFAR k-d树 JZPTAB 分块 hash sam【太可怕了 不会写】 JZPLCM 三维偏序,可持久化线段树维护 JZPEXT 数位统计(常数优化) JZPGYZ suffix array水... 阅读全文
posted @ 2014-07-09 20:36 FancyCoder0 阅读(732) 评论(0) 推荐(1) 编辑
摘要:本人BZOJ的处女作。 这题题面还是蛮有趣的吧。 然后三个问题都蛮有意思的。 要保证正确性,出数据还是异常蛋疼啊。 本来各出三题的。但是考虑到是OJ上的题,就搞在一起了。这样代码量就会比较大。 后两问数据偏水。 Upd: 好像没人做的样子。 那就发一下简要的题解吧。 其实p1来源于对miu函数的快速 阅读全文
posted @ 2014-05-08 17:39 FancyCoder0 阅读(1035) 评论(1) 推荐(0) 编辑
摘要:由于SDOI某题是线段树套不完全动态凸包,以前没写过,所以抱着试试的心态去写了写。(感觉还是蛮好写的对吧?)由于不想手写平衡树,又因为有一个二分斜率的东西,所以set要搞一个开关。于是写啊写,搞了好久,终于对了。然后悲剧发生了。。。常数太大,死交不过。尼玛?根本优化不动。一怒一下,改成手写。。。然后... 阅读全文
posted @ 2014-04-15 23:25 FancyCoder0 阅读(346) 评论(0) 推荐(0) 编辑
摘要:给一个1-N的排列a,Q组询问(l,r) sigma(gcd(a[i],a[j])),i=l..r,j=i+1..rN,Qsigma(d=1..n,d2=1..n/d,i,j=1..n/d/d2,u(d)*d2) (A)u(d)*d2是要加到(i*d*d2,j*d*d2)这里的,然后现在是我们已知i*d*d2,枚举出所有的j*d*d2,这个显然就是枚举约数(前面预处理约数和u函数)。所有复杂度就是上面(A)式的答案。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 阅读全文
posted @ 2014-04-13 10:56 FancyCoder0 阅读(689) 评论(0) 推荐(0) 编辑
摘要:给定一张N个点N条边的有向图,每个点出度为1。求最少增加多少条有向边使得:从1到每个点的最短路径不大于K。显然先要从出度为0的点开始将外面树上的所有点搞掉。问题就转化为剩下一个环,并且环上有一些点已经染好色,可以将其中连续K个点染色,问将其全部染好的最小次数。可以从某点开始染,预处理每个点隔K个之后下一个未染色的点。这样做一次是O(N/k)。可以发现其实只要将任意连续K个未染色的点都做一次就保证能出最优解。总复杂度为O(K)*O(N/K)=O(N)。算法其实不难,但尼玛细节搞死人啊!!!%>_#include#include#include#include#include#include 阅读全文
posted @ 2013-10-19 19:41 FancyCoder0 阅读(307) 评论(0) 推荐(0) 编辑
摘要:给定G和N。求mod P(P=999911659)。就是一道赤裸裸的数论题拉。在cxms众牛的激烈讨论下,最终没有做出本题。其实,我们只是差了一步。从头来。显然P是一个质数。利用循环节性质和欧拉函数性质可以得出答案即为。如果我们已知,则我们可以利用快速幂在时间内求出答案。现在问题聚焦到求解上。由于N的所有约数可以利用枚举约数方法在时间内求得,所以问题的关键即是求解。(然后到这里我们都无力了。)Lucas定理和欧拉-费马定理能在时间内解决这个关键问题。但是,必须满足模数是质数!怎么办?怎么办?怎么办?然后很自然的就想到了质因数分解按每个质因数求解答案后利用线性模方程组的扩展GCD或中国剩余定理方 阅读全文
posted @ 2012-05-19 22:01 FancyCoder0 阅读(623) 评论(0) 推荐(1) 编辑
摘要:【题目分析】一条直线上给定相对距离Di(距第一个村庄的距离)的N个村庄中建K个基站,每个村庄i接收的范围为前后Si,建基站费用Ci,一个村庄要么被接受到要么额外支付Wi。设计方案求最小总费用。【算法分析】朴素方程为f[i][j](前i个村庄中选j个基站,第j个建在i)=MIN(f[k][j-1]+W[k+1..j](表示k+1..j村庄中建一个基站后覆盖所有k+1..j(没覆盖就支付费用)所需的最小总和)).W预处理需要N^3时间,DP需要N^2*K的时间。显然需要优化。其实这样一个“裸”的方程看起来似乎很难再在时间上优化下去,因为该算法的瓶颈在于预处理的“复杂”(预处理涉及到题中的C、S、W 阅读全文
posted @ 2012-03-08 19:24 FancyCoder0 阅读(574) 评论(0) 推荐(0) 编辑
摘要:【出处】HNOI2011Day1【题目描述】给定一个长度为N的由“(”和“)”组成的字符串和M个操作。要求实现四个操作:1、统一:将[a,b]之间的所有括号改成c(“(”或“)”)2、翻转:将[a,b]之间的字符串翻转3、改变:将[a,b]之间的‘(’变成‘)’4、询问:询问[a,b]之间的字符串至少要改变多少位才能变成合法的括号序列。N,M≤100000【算法分析】此题非常巧妙,可以成功转化成类似最大连续子序列的求解方式,并运用Splay进行维护。对于一个已知的括号,我们该如何求出询问的答案?比如)((())((这样一个,我们把符合的一层层去掉,就变成了)(((,那么很显然答案是3。并且易得 阅读全文
posted @ 2011-11-24 19:25 FancyCoder0 阅读(1426) 评论(0) 推荐(1) 编辑
摘要:RQNOJ646现在有N个元素,每个元素具有3个属性Ai, Bi, Ci,现在青青要求把全部元素分为3个集合,称为集合X、集合Y和集合Z,使表达式的值最小。可以让某个集合为空。1 ≤ n ≤ 100, 000,1 ≤ Ai, Bi, Ci ≤ 100, 000, 000怎么说呢?这题是我至今见到过的最神奇的一题。神奇到叹为观止。经尝试,贪心是不行的,易找出反例。经尝试,高深的算法和数据结构是很难想出来和写出来的。经了解,本题可以用搜索做。且必须是裸搜,即O(3^N)的。经尝试,若加个排序的预处理,写O(NlogN+2^N)是过不了的。对于O(3^(10^5))在1s内跑出,我实在无话可讲。这就 阅读全文
posted @ 2011-10-21 20:59 FancyCoder0 阅读(351) 评论(0) 推荐(0) 编辑
摘要:有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 阅读(260) 评论(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 阅读(288) 评论(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 阅读(434) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示