随笔分类 - 题解
摘要:最小割 最小割为割掉后使s、t不连通的边的容量和的最小值,数值上等于最大流 inline void add(int a,int b,int c){ e[++tot].t=b;e[tot].flow=c;e[tot].nxt=head[a];head[a]=tot; e[++tot].t=a;e[to
阅读全文
摘要:题面 一枚金币向左移若干格等价若干个空格向右移一个金币,终状态为所有空格在最右,转换为阶梯博弈 阶梯博弈 每个阶梯上有若干枚石子,每次操作将同个阶梯的任意石子向下移一个阶梯,不能操作者输 等价对奇数阶梯做Nim博弈 先手按Nim博弈操作。若对方移动偶数阶梯,则将对方移动石子继续下移到偶数阶梯;否则按
阅读全文
摘要:一周一博客二专题计划 [集训队作业2013] 城市规划 题面 n 个点的简单 (无重边无自环) 有标号无向连通图数目。 看着就很典 思路 设 为n点连通图数目。设 为n点不一定联通图数目,显然直接枚举每条边是否存在,\(g(n)=2^{\frac{n*(n-1)}{2}}
阅读全文
摘要:思路很简单,但非常考验代码能力 思路 假设对区间[2,8]进行操作 路径由lca 15分成左右俩条链。将左端点2跳到最右上17,对左链17-16-10-15上每个作为左儿子的节点的兄弟操作。 于是构造新树:节点的新父亲为最近异侧祖先的同侧儿子 (手画略丑请忽略) 链上区间操作——树链剖分 一共有三棵
阅读全文
摘要:题面 题目描述 为了庆祝新的一年到来,小M决定要粉刷一个大木板。大木板实际上是一个W*H的方阵。小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形全部刷好。小M乐坏了,于是开始胡乱地使用这个工具。假设小M每次选的两个格子都是完全随机的(方
阅读全文
摘要:题面 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) 思路 很容易想到先固定k个元素做交集,剩下n-k进行挑选,这个集合的所有子集2n-k个表示包含这k个元
阅读全文
摘要:题面 1、先考虑暴力,枚举A每个子串,查看排名,与B匹配。看似时间是O(nklog(n)),但其中k是不完全的,只要不卡kmp,是可以过的。 比较排名时,若查询i之前小于等于a[i]的数,那我们需要现添加,时间上的k就是完全的;若以O(n)的复杂度,在原子串基础上向后走1位,前面删1位,保证子串个数
阅读全文
摘要:题面 浅讲一下思路 1、最开始呢,并没有意识到问题的严重性。认为num与nxt是一样的,再加上一个不重叠的条件即可。然后就发现样例都过不去,还觉得自己可对了。再次读题发现num是字符串的数量,于是又加上了nxt inline void get_nxt(const string s){ int j=0
阅读全文