摘要: A 签到,然而手残WA了一发,不过加上50分名次不变。 #include<bits/stdc++.h> using namespace std; int n,m; int main() { scanf("%d%d",&n,&m); m=n-m; if(m==n)printf("1"); else i 阅读全文
posted @ 2019-05-10 08:03 hfctf0210 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题 有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'。这显然能够得到一个最大的独立集。而p可以在维护度最小的点最大这一过程中,把G的所有点加入集合p。因为 阅读全文
posted @ 2019-05-09 13:06 hfctf0210 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异或和为0。具体证明:参考这篇博客,当然不是我写的。如果不知道结论,里面有例题POJ1704可以做一下 阅读全文
posted @ 2019-05-09 11:36 hfctf0210 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 一眼看上去就应该能用半平面交去做。 首先考虑怎么求可能得第1名的人:每个人的函数为直线,就是在所有人的半平面交中的上边界者即可获得第一名,这个可以单调队列求解。 再考虑如何求可能得第2名的人:满足2个条件:1、在去掉可能得第1名的人后可以拿第1,这个跳转到上面的过程;2、至多同时被1个能拿第一名的人 阅读全文
posted @ 2019-05-09 10:32 hfctf0210 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 注:以下p[i]均表示概率 设F(x)为按i次开关后到达终止状态方案数的EGF,显然F(x)=π(ep[i]x/p+(-1)s[i]e-p[i]x/p)/2,然而方案包含一些多次到达合法方案的状态,需将其排除。n次操作回到原状态的方案数的生成函数G(x)=π(ep[i]x/p+e-p[i]x/p)/ 阅读全文
posted @ 2019-05-09 10:09 hfctf0210 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 好神的题啊! 看了这题只会第一个subtask,又参考了HN-CJ鸽王zsy的题解,实在太菜了。 暴力转移是O(nc2),很显然没有分。考虑子任务1,2,只需要转移包含已染色格子的列,然后状态数只有O(nc),对于关键两列(即有染色的列)间,只有5种状态。而这个可以初始化转移,转移讨论有点复杂,而且 阅读全文
posted @ 2019-05-08 21:29 hfctf0210 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 通过子任务1、3十分显然,子任务4实际上就是线段树,和我下午写的[SDOI2015]道路修建一模一样,堪称“我抄我自己”,不会的可以先做一下这个题。 然后考虑正解,参考了zhoushuyu的博客,首先可以对前i列做MST,就是把前i-1列和第i列合并起来,而这时候只需要把第1和第i列的点作为关键点建 阅读全文
posted @ 2019-05-07 22:43 hfctf0210 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 题意:给定2行n列的四连通带权网格图,支持修改边权和查询第[l,r]列的最小生成树 题解:这是一道好题,要么SDOI2019中n=2的20pts怎么会“我抄我自己”?(当然NOIP2018“我抄我自己”除外,因为那是想给大家送分,而且NOIP2018的质量有多烂大家自己心里清楚) 对于区间[l,r] 阅读全文
posted @ 2019-05-07 18:25 hfctf0210 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 为什么我怎么看都只会10pts?再看还是只会50~70?只会O(n2(R-L+1))/O(nlogn(R-L+1))……一眼看动态DP可还是不会做…… 根节点的答案是叶子传上来的,所以对于L=R的数据,可以直接枚举需要±n的叶子节点个数num,然后答案就是2num,每次枚举时重新扫描一下就是O(n2 阅读全文
posted @ 2019-05-06 22:38 hfctf0210 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 首先只需要考虑每种牌出现的张数即可,然后判断一副牌是否能胡,可以DP一下,令f[i][j][k][0/1]表示到了第i位,用j次i-1,i,i+1和k次i,i+1,i+2,是否出现对子然后最大的面子数量,j,k∈[0,2],转移也很容易。这样暴力枚举可以获得50pts的“好”成绩。 然后可以丢掉第一 阅读全文
posted @ 2019-05-06 16:04 hfctf0210 阅读(320) 评论(0) 推荐(0) 编辑