摘要: 今天效率终极无敌低。 一开始没读懂题。给你一张图,每次删除一个点和该点连出的边,问每次删除后未被删除的点构成的图的连通块的个数。 考虑倒着做,先把所有点删完,每次往图中加点,并查集维护连通块,每加进一个点ans++,然后找它的边,若是连出的点和它不在同一个并查集中,合并,ans--; 第一次找连通块 阅读全文
posted @ 2017-09-23 17:45 啊宸 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 问一个图最小生成树的个数,n<100,m<1000,规定相同权值的边不超过10条。 每天午觉起来很长一段时间都仿佛活在梦中。上午看的下午来打,狂RE不止,发现一种边只有一条的情况没有r会GG。。 //Twenty #include<cstdio> #include<cstdlib> #include 阅读全文
posted @ 2017-09-23 15:26 啊宸 阅读(201) 评论(0) 推荐(0) 编辑
摘要: burnside引理: 大致意思是,等价类的个数=(∑每个置换中等价的方案数)/置换数。 至于证明在下这么愚蠢的人肯定不知道啊。 有了引理就只需求出每个置换中等价的方案。 先暴力跑一遍找到当前置换中的tot个循环,等价方案就是每个循环内颜色都相同。 相当于把tot个物品装到三个箱子中,问每个箱子刚好 阅读全文
posted @ 2017-09-23 10:50 啊宸 阅读(171) 评论(0) 推荐(0) 编辑
摘要: splay维护hash值; 看到大佬们都在打数据结构,我说好的不打数据结构又自己打脸了。 为了写这个昨天还特意去打了Splay的普通平衡树,自从我学会Treap以来第一次用splayA掉普通平衡树QAQ 没有在前后加点,所以特判了在前后加字母的情况。查询就二分答案,然后转过去取hash值,判断是否相 阅读全文
posted @ 2017-09-23 09:38 啊宸 阅读(179) 评论(0) 推荐(0) 编辑