正难则反
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
【NOIP2015模拟11.2】复制&粘贴2
Description给出一个的字符串和m次操作。每次操作将a~b这段区间(左开右闭)插入到c这个位置。操作中字符串的长度不超过n(超过的delete掉),求操作完的字符串的前k个字符。 k<=200 n<=10^9 m<=2*10^5 保证操作合法Solultion观察到k比较小,正难则反。 对于每一个结尾在i这个位置的字符,逆推出它在原串中的位置。 很明显,位置只会有向左平移,直接粘原创 2016-04-06 20:52:27 · 868 阅读 · 0 评论 -
[bzoj1008][HNOI2008]越狱
Description求n个数排成一行,每个数都在1~m范围内且相邻两个数至少有一组相同的方案数。 n<=10^12,m<=10^8Solution发现直接计算很麻烦。 正难则反,我们考虑用总数-不合法的方案数。 总数很显然是mnm^n 那么不合法的方案数就是 第一个位置可以有m种放法,然后其他的每个位置都不可以和前面的重复,就是(m−1)n−1(m-1)^{n-1} 然后就完了。最近好原创 2016-06-03 15:55:38 · 620 阅读 · 0 评论 -
[bzoj1015][JSOI2008]星球大战starwar
Description给出n个点和m条无向边,再给出q次操作,每次操作把一个点和与他相连的边全部删除,求每次操作之后的联通块个数。 n,q<=4 * 10^5, m<=2 * 10^5Solution正着做似乎很麻烦?我们可以考虑正难则反(又来)。 为什么?因为并查集不兹瓷删边,但兹瓷加边。2333 似乎我已经直接把做法说出来了。然后就是细节了。 判断联通块个数不能用O(N),开个ans判一原创 2016-06-03 20:58:44 · 900 阅读 · 0 评论 -
【GDOI2014模拟】网格
Description求从(0,0)点走到(n,m)点不越过直线y=x的方案数。 n,m<=5000Solution首先,这是一个经典问题,相信大家都会做。 正难则反,我们用总数减去不合法的方案数。 总数很明显是Cmm+nC_{m+n}^{m} 然后,因为题目要求是不越过,我们把直线向上平移一格,变成y=x+1, 然后作出原点关于这条直线的对称点(-1,1),那么不和法的方案数就是Cm−1原创 2016-06-11 18:32:26 · 829 阅读 · 0 评论 -
[CF 712C] Memory and De-Evolution
Description给出一个边长为x的等边三角形,每次你可以修改一条边的长度,保证修改完的图形仍然是三角形。问最少用多少步可以把它变成边长为y的等边三角形。 y<=x<=10^5Solution正难则反,我们考虑加法。 因为我们需要尽快逼近x,于是我们每次可以贪心的选择最短的那一条边变成余下两条边之和。 其实这道题应该可以有数学方法O(1)求解,但是蒟蒻并不会。Code#include<cs原创 2016-10-05 16:26:33 · 650 阅读 · 0 评论 -
[51nod 1306]高楼和棋子
Description一栋高度为n层的楼,你有m个棋子,在第x层以上扔棋子会碎。 问对于x=0~n,最坏情况下需要试多少次才可以试出这个x。 T<=50000,1 <= N <= 10^18, 1 <= M <= 64Solution是不是长得有点眼熟? 相信大家都在小学奥数书上见过这种题。 不过搬到OI上来似乎就没有那么好做了。 最优策略很难想啊。。。 那我们不妨换个角度。 直接求次原创 2016-11-09 19:56:01 · 952 阅读 · 0 评论