03 2018 档案

摘要:最小不可交路径覆盖 题目链接:https://www.luogu.org/problemnew/show/P2764 题解: 如何建模? 把每个点i拆成xi和yi两个点。若i与j间有边,就链接xi与yj,求两个集合的最大匹配。 证明: 我们可以把一开始的点每个点看做一条路径。那么每增加一条匹配边,就 阅读全文
posted @ 2018-03-29 17:31 zubizakeli 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:http://codevs.cn/problem/1500/ 后缀数组裸题。(不清楚概念的点这里) 代码及说明: 阅读全文
posted @ 2018-03-28 16:34 zubizakeli 阅读(262) 评论(0) 推荐(0)
摘要:nim游戏: n堆石子,操作为可以从任意一堆拿走任意正整数个石子,不能操作者输。问先手胜还是后手胜。 结论: 当n堆石子的个数的亦或为0时,先手必败;否则先手必胜。 证明: 1,若亦或值不为0,则一定可以通过一步操作让它变成0. 考虑亦或值最高位的那个1,一定有一堆石子数在那一位是1(否则总的亦或里 阅读全文
posted @ 2018-03-27 10:44 zubizakeli 阅读(816) 评论(2) 推荐(0)
摘要:三维偏序:https://www.luogu.org/problemnew/show/P3810 cdq分治即可。 多维偏序:http://cogs.pro:8080/cogs/problem/problem.php?pid=2639 可用bitset水过去。(如果数据范围再大一些的话还要分块,不过 阅读全文
posted @ 2018-03-24 14:25 zubizakeli 阅读(234) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P2473 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃 阅读全文
posted @ 2018-03-24 09:52 zubizakeli 阅读(184) 评论(0) 推荐(0)
摘要:题目链接:http://cogs.pro:8080/cogs/problem/problem.php?pid=66 题解: 直接枚举复杂度是O(n!*n),原地爆炸。我们考虑优化。 直接枚举过程中可以判断前后是不是素数,进行剪枝,复杂度O(7!)(15以内的素数有7个),可过。 或者我们直接枚举素数 阅读全文
posted @ 2018-03-23 19:48 zubizakeli 阅读(186) 评论(0) 推荐(0)
摘要:链接:https://www.luogu.org/problemnew/show/P3959 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度。 小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个 阅读全文
posted @ 2018-03-23 17:58 zubizakeli 阅读(225) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3254 题意: 一个n*m的矩形,告诉你哪些格子可以放棋子,哪些格子不能放(1表示能放,0表示不能放)。且相邻格子不能放。问一共有多少种放棋子的方案。(一个棋子也不放算一种方案,答案对1e8取模)。 题解: 状态压缩递推。 设dpi,s 阅读全文
posted @ 2018-03-23 16:31 zubizakeli 阅读(134) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 题解: 一道经典的循环期望,难点在于公式的推导。 推导太复杂,看着题解都推了好久,不想再用公式编辑器写一遍了,想看的点这里。 另: 这题精度一定要开够,一开始开了1e-5 WA了,看别人博客发现也 阅读全文
posted @ 2018-03-22 17:31 zubizakeli 阅读(220) 评论(0) 推荐(0)
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2134 题解: 每一步正确的概率的倒数之和就是期望。 第i道题正确的概率为1/max(a[i],a[i-1])。因为假设第i题的选项比第i-1题多,那么正确概率为1/a[i-1] * a[i- 阅读全文
posted @ 2018-03-22 11:24 zubizakeli 阅读(199) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P1291 题解: 其实问题可以看做集齐所以球星需要购买饮料数的期望值。 我们设fk表示还有k个球星未收集。这时再去买一瓶饮料抽到未收集过球星的概率为k/n,抽到收集过的球星的概率为(n-k)/n,那么fk = f 阅读全文
posted @ 2018-03-22 10:15 zubizakeli 阅读(370) 评论(0) 推荐(0)
摘要:题目链接:http://cogs.pro:8080/cogs/problem/problem.php?pid=304 题解: 直接搜索(枚举)复杂度为O(m^n),可以用meet in the middle降为(sqrt(m^n))。 什么是meet in the middle呢? 就是把整个搜索范 阅读全文
posted @ 2018-03-21 18:10 zubizakeli 阅读(204) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P2962 题解: 一道高斯消元题,也可以用搜索写。所以我选择搜索。 可以发现每一个开关最多只用操作一次(因为开关两次等于不动,何必浪费步数呢?),所以我们可以考虑每个开关的状态,一共有2^n次方种情况,复杂度过高 阅读全文
posted @ 2018-03-21 18:02 zubizakeli 阅读(204) 评论(0) 推荐(0)
摘要:题目链接:http://cogs.pro:8080/cogs/problem/problem.php?pid=1972 题解: 就是一道matrix-tree定理的模板题。(不熟悉该定理的同学请戳这里) 参考代码: 1 #include<iostream> 2 #include<cstdio> 3 阅读全文
posted @ 2018-03-21 12:13 zubizakeli 阅读(151) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P4035 题解: 明显是高斯消元题。问题是距离相等的条件怎么用呢? 距离相等的条件可以列出n个等式(即(x-xi)^2+(y-yi)^2 == (x-xi+1)^2+(y-yi+1)^2 ,[以平面坐标系为例]) 阅读全文
posted @ 2018-03-20 18:11 zubizakeli 阅读(147) 评论(0) 推荐(0)
摘要:推荐一个讲得不错的博客:http://www.cnblogs.com/ECJTUACM-873284962/p/6880199.html 洛谷模板题:https://www.luogu.org/problemnew/show/P3389 模板题代码: 大家看着代码照着样例手动模拟一下过程就能理解了。 阅读全文
posted @ 2018-03-20 17:24 zubizakeli 阅读(172) 评论(0) 推荐(0)
摘要:题目链接:http://codevs.cn/problem/3342/ 题解: 求最大值最小? 考虑二分答案。 在[1,n]中二分出满足要求的最小的t。 设f[i]表示在前i份作业中做第i份作业且前i份作业满足最大不做区间小于等于二分出的t的最小时间花费。 所以f[i] = min{f[j]}+ti 阅读全文
posted @ 2018-03-19 19:53 zubizakeli 阅读(242) 评论(0) 推荐(0)
摘要:题链:https://www.luogu.org/problemnew/show/P1488 题解: 容易发现当黑色三角形在最外面的时候先手胜。 那么接下来考虑黑色三角在里面的情况。因为双方都会尽力避免让黑色三角露在外面,所以必败态为两个白色三角夹着一个黑色三角。又因为每次双方都只能取一个,所以当( 阅读全文
posted @ 2018-03-19 19:24 zubizakeli 阅读(403) 评论(0) 推荐(0)
摘要:寒假就听很多大佬说过cdq分治,最近正好学到,写个博客总结一下。 什么是分治? 所谓分治就是把一个大问题分解成两个小问题,解决完两个小问题之后再考虑两个小问题之间的影响(或者先考虑两个小问题之间的影响 )。 比如点分治求树上两点之间距离为k的点对有多少个,就是找出重心后先求出过重心的点对数,再去递归 阅读全文
posted @ 2018-03-18 22:00 zubizakeli 阅读(732) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/gym/100952/problem/G 题意: 刚开始双方面前有 [1-n] n个数,游戏规则为双方每轮说出一个数m,则拿掉序列中所有m的因子,拿掉最后一个数的一方输。(每轮说出的数m必须满足剩余序列中至少有一个数是它的因子) 题解: 当n为1 阅读全文
posted @ 2018-03-18 16:32 zubizakeli 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 题意: 一个n*n的棋盘(n<=20),在某两个位置上分别有一个白棋和一个黑棋。先手只能移动白棋,后手只能移动黑棋。白棋的移动规则为只能往上下左右某个方向移动一格,黑棋的移动规则为可以 阅读全文
posted @ 2018-03-17 21:58 zubizakeli 阅读(443) 评论(0) 推荐(0)
摘要:题意: 一个n*m的棋盘,左下角有一颗星星。操作者可以选择向上、向右、或向右上移动一格,不能移出棋盘。不能移动者输。问先手胜还是后手胜。 题解: 可以发现最上面一行最右边是必败态,且该行胜败态交叉分布。那么第二行就全是必胜态,第三行最右是必败态,往左必胜必败态交叉分布... ... 所以可以总结出规 阅读全文
posted @ 2018-03-16 08:06 zubizakeli 阅读(208) 评论(0) 推荐(1)
摘要:题目链接:https://loj.ac/problem/524 题意: 一开始有一个长度为n的序列,其中有的数是已知的(这些已知数两两不同),有些数是待填写的。操作为任选一个代填写位置填写一个未在序列中出现过的实数。无法填写时游戏结束。当游戏结束后若逆序对数目为奇数,则先手胜,否则后手胜。 题解: 阅读全文
posted @ 2018-03-15 17:14 zubizakeli 阅读(206) 评论(0) 推荐(1)
摘要:题目链接:https://www.luogu.org/problemnew/show/P2634 题意: 给你一棵树,问任选两个点(x,y)满足x到y的树上距离是3的倍数的概率。 题解: 只要求出一共有多少个点对(x,y)满足x到y的树上距离为3的倍数即可。 那么怎么求呢?点分治。 什么是点分治呢? 阅读全文
posted @ 2018-03-15 16:13 zubizakeli 阅读(124) 评论(0) 推荐(0)
摘要:题意: 平面上n个点,给出d,求最小的k使得在某个横坐标长度为k的区间内的纵坐标的最大值与最小值之差超过d 题解: 如果做过poj2823这道题的话,这道题应该是挺好想的。(没做过的同学可以点这里) 我们可以二分长度k,然后就和上面这道题的操作一样了。复杂度是O(n*logn),1e5的数据完全没问 阅读全文
posted @ 2018-03-14 19:56 zubizakeli 阅读(264) 评论(0) 推荐(0)
摘要:题意: n堆果子,每次可以选择两堆果子并将其合并成一堆果子,代价为新生成一堆的果子数。问最终合并成一堆的最小代价。(n<=1e5,Si<=2e5)(Si表示第i堆的果子数) 题解: 其实这题做法有很多。可以O(n^3)动规,可以O(n^2*logn)贪心,也可以用堆优化使得贪心的复杂度降到O(n*l 阅读全文
posted @ 2018-03-14 16:46 zubizakeli 阅读(763) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2823 题意: 一个长度为n的序列上有一个长度为k的滑窗从左向右滑动,问每个时刻滑窗内最小值和最大值。 题解: 我们考虑单调队列。 对于维护最小值,我们维护一个单调递增的序列。新加入一个数时,弹出队尾比他大的数(因为这些数即比他大,又比 阅读全文
posted @ 2018-03-14 15:42 zubizakeli 阅读(209) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P3942 题解: 当k一定且很小(1或2)时,明显这就成了一道树形dp。也就是说如果你写过HNOI2003消防局的设立的话这道题就可以至少拿75分。(或者你花上几个小时推出+调试k=3时的dp方程就可以拿到90分 阅读全文
posted @ 2018-03-14 11:34 zubizakeli 阅读(217) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P3258 题解: 直接树剖,然后维护差分序列。直接线段树维护序列的话复杂度是2个log,用差分的话就是1个log。 #include<iostream> #include<cstdio> #include<cst 阅读全文
posted @ 2018-03-13 18:00 zubizakeli 阅读(165) 评论(0) 推荐(0)
摘要:题意: 一堆n个石子,先手可以取任意个但不能取完,之后每个人不能取超过前一个人所取石子数的2倍(最少要取一个)。问谁会赢。 结论: 当n为斐波那契数列中的数时,后手胜,否则先手胜。 对证明感兴趣的同学可以看一下这篇博客,博主讲得挺好:http://blog.csdn.net/dgq8211/arti 阅读全文
posted @ 2018-03-13 17:10 zubizakeli 阅读(170) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P1268 题解: 首先我们考虑当n=2时的情况,则ans=e[1][2]。 当n等于3时,则可以看3是从1,2之间的链上分叉出来的。(题目保证了对于任意i、j、k,e[i][j] <= e[i][k]+e[k][ 阅读全文
posted @ 2018-03-13 16:42 zubizakeli 阅读(338) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.org/problemnew/show/P3185 题解: 首先这道题第一眼望过去好像不是很简单qwq,那么我们先尝试看能不能发现一些特殊性质。 我们先从后手相消的原则去看,则可以发现若一个瓶子中有偶数个的话,那么这个瓶子是没有意义的。因为后手可以完全复 阅读全文
posted @ 2018-03-12 11:08 zubizakeli 阅读(296) 评论(0) 推荐(0)
摘要:题意: n个数,m个操作。 查询区间[a,b]内不同数字数 将某个数修改为c 题解: 带修改莫队。 与普通莫队不同的就是要记录一下每个查询操作前有多少个修改操作,然后暴力修改或改回去。 题目链接:https://www.luogu.org/problemnew/show/P1903 PS:scanf 阅读全文
posted @ 2018-03-11 18:47 zubizakeli 阅读(357) 评论(0) 推荐(0)
摘要:题意: n枚硬币排成一个环,操作为可以选择一个或相邻的两个取走(相邻指的是最开始相邻,即不会自动补成环)。问先手胜还是后手胜。 题解: 首先我们考虑1和2,则明显是先手必胜。 如果大于等于3,那么先手取后一定是一条链。这时我们一定可以把这一条链变成两条相等的链。(如果链长是奇数就取掉最中间的那个,否 阅读全文
posted @ 2018-03-10 11:10 zubizakeli 阅读(153) 评论(0) 推荐(0)
摘要:题意: 给你两堆石子,有两种操作:1,在某一堆取x个(x>=1个);2,在两堆同时取x个(x>=1)。 给你初始两堆石子数,问先手胜还是后手胜。 题解: 其实这是著名的威佐夫博弈,有个结论是假设两堆石子为(a,b)(a<=b),那么如果满足{a == floor(0.5*(sqrt(5)+1)*(b 阅读全文
posted @ 2018-03-09 15:14 zubizakeli 阅读(189) 评论(0) 推荐(0)
摘要:题意: n个数字排成一列,每个人只能选择最左边或最右边的数字取掉,自己该回合的得分就是该数字的值。 当两个人都选择最优决策时,问两个人各能得到多少分。 题解: 博弈论的外表,实质则是记忆化搜索 (不过知道博弈论原理的话应该更好想吧) #include<iostream> #include<cstdi 阅读全文
posted @ 2018-03-08 17:54 zubizakeli 阅读(351) 评论(0) 推荐(1)
摘要:题意: 一个n*n的棋盘,一开始在左上角有一枚棋子,操作为可以上下左右移动一格,不能移出棋盘且不能移动到之前走过的格子。问先手胜还是后手胜 https://www.luogu.org/problemnew/show/P4136 题解: 假如n是偶数,我们可以把所有格子划分成1*2的块。那么先手只要将 阅读全文
posted @ 2018-03-07 17:15 zubizakeli 阅读(243) 评论(0) 推荐(0)
摘要:题意: 给你一个数n(n<=1e6),玩家可以进行的操作为减去该数最大数码或最小非零数码。即数2014可以减去1变成2013或减去4变成2010。将数变成0的一方赢。 题解: 直接求出1-1e6的SG函数值即可。复杂度O(n*lgn)(这里的log以10为底)。 #include<iostream> 阅读全文
posted @ 2018-03-06 20:09 zubizakeli 阅读(373) 评论(0) 推荐(0)
摘要:题意: 给你n组石子,每组有两摞。操作为选其中一摞石子分成两摞,抛弃原来同一组的另一摞石子,直到无法操作。问给你这n组石子,问先手胜还是后手胜。 (比如(10,8,),你可以将10分为(5,5),那么这一组石子就成了(5,5),那个8就可以不用管了) 题目链接:https://www.luogu.o 阅读全文
posted @ 2018-03-05 11:50 zubizakeli 阅读(247) 评论(0) 推荐(1)
摘要:由于明天开学,不一定有时间写博客,故今天一次写两道题qaq q1: 题意: 一堆n个石子,可以取1,2,3...m个,双方轮流取,给你n和m,问先手胜还是后手胜 题解: 易得当n%(m+1)==0时后手必胜,否则先手胜。假如对方取x个,你就取(m+1-x)个,使得对手面对的数一直是(m+1)的倍数, 阅读全文
posted @ 2018-03-03 21:04 zubizakeli 阅读(482) 评论(0) 推荐(1)
摘要:https://www.luogu.org/problemnew/show/P3150 题目大意: 两个人在玩游戏,一开始有一个数x,先手方把他拆分成两个数a和b,使得(a+b==x,a>0,b>0),然后后手方选择其中一个数按之前规则拆分,另一个数就被丢掉,然后先手方再从两个数中选择一个... . 阅读全文
posted @ 2018-03-02 22:38 zubizakeli 阅读(193) 评论(0) 推荐(0)
摘要:题目大意: 给你三个自然数a,b,c,让你求一组x,y使得(a*x + b*y == 1)且(|x|+|y|)最小,若(|x|+|y|)相同则使得(a*|x|+b*|y|)最小。 题解: 我们可以使用扩欧轻易求出一组(x0,y0),但怎么才能让(|x|+|y|)最小呢? 我们设 d = gcd(a, 阅读全文
posted @ 2018-03-02 14:26 zubizakeli 阅读(172) 评论(0) 推荐(0)
摘要:题目大意: 给你一个n行20列的棋盘,上面有一些棋子 每个棋子只能往右边第一个空格处移动,无棋子可移动即判定为输 现在给你棋盘大小和棋子分布,问先手是否必胜 题解: 可以看出每行是独立的,也就是说只要求出每行的SG函数值,在亦或一下就可以了(SG定理^_^) 又由于每行长度一样,所以可以预处理每个状 阅读全文
posted @ 2018-03-01 22:33 zubizakeli 阅读(227) 评论(0) 推荐(0)