WC2015-2019

2015

k小割

强 行 三 合 一

前10分爆搜割集,然后check即可

后面40分,大概所有不是源点汇点的点都和源点有边,和汇点有边,那么每个点连的两条边要选一条/两条割.设其中较小权值为\(a\),较大权值为\(b\),那么一个点有三种状态\(\{a,b,a+b\}\),初始都为第一种,那我们保存状态集合,然后每次选最小的状态输出,然后拓展出次小的状态,这个拓展要么是当前指定点的\(a\)变成\(b\),或者\(b\)\(a+b\),要么是后面找一个点的\(a\)变成\(b\)(满足\(b-a\)比当前点\(b-a\)大),后面一种拓展可以改为当前点由\(b\)\(a\),下一个是后面一坨点中\(b-a\)更大的且最小的点,他从\(a\)\(b\)

最后50分,考虑记录一些割状态,每次选最小的,然后拓展出次小割状态,次小割一定要么是强制选择一个没被割的边,要么强制不割某条割边,换一条边割,具体拓展方法是维护这个状态的强制选与不选的边集,然后先处理这些边(强制选的强制断开并加到答案里去,强制不选的把容量改为\(\infty\)),再跑个最小割,然后找出次小割,而次小割一定是某条不在割集中的边割掉产生的,那这条边就会代替割集中的一条边,枚举这条被代替的边\((x,y)\),那么新的边一定在残量网络中\(S\)\(x\)的最小割上,或\(y\)\(T\)的最小割上.考虑这么做的正确性,一个割集的次小割一定由割集与最小的边有关,这条边要么在割集中,要么不在,那么用上面的方法就可以考虑到这两种情况

混淆与破解

留坑待填

未来程序

task1

\(ab\mod c\)

task2

打表可得为\({fib_{n-1}}^2\)

task3

要求\(n,\sum i,\sum i^2,\sum i^3,\sum i^4\),利用\((i+1)^k=\sum_{j=0}^k\binom{k}{j}i^j\)设计矩阵,矩乘后即可全部求出来

task4

如果方格里有\(a\)个位置为\(1\),那么count1答案为\(a^2-a\)

count2是求对于每个为\(1\)位置,离它最近的为\(0\)位置的曼哈顿距离,直接把为\(0\)位置丢进队列开始bfs,对每个位置求最近曼哈顿距离即可

task5

求全\(1\)子矩阵个数,可以先固定上下界,然后如果某一列在这个上下界中全为\(1\)就把对应位置标\(1\),然后就是求全\(1\)连续段问题.因为一个极长的\(1\)(长度为\(l\))的贡献为\(\frac{l(l+1)}{2}\),那么可以考虑改为先枚举下界,上界依次往下移动,然后对于新增的全\(1\)列就减去前后两个连续段贡献,合并之后加上新的贡献,可以利用并查集维护

task6

这题只能找循环节来做,但是暴力用map找不行,floyd也不大行,考虑brent算法,维护两个指针以及一个\(lm\)值,每次移动第一个指针,如果找的过程中第一个指针和第二个相遇了就说明找到了环,如果第一个指针移动步数\(=lm\)就把第二个指针移到第一个指针处,同时\(lm=lm*2\)

task7

高级版数独,搜的时候维护每一行,每一列,每一个方阵是否放了某个字符,如果这个字符没在当前行/列/方阵出现过才能放;以及每次从能放字符数量最小的开始放

task8

偏序关系计数,大概偏序关系为若干\(DAG\),写出统计柿子然后推一推即可. 每个\(DAG\)都是独立的,可以分开算.然后对于一个\(DAG\)我们考虑枚举这个上面的数有多少种相同的,然后状压dp算出在有\(i\)种相同的数的情况下,上面的数分别为其中某一种数的方案数,然后这个\(DAG\)贡献为\(\sum dp_{|S|,i}\binom{n}{i}\),最后乘法原理合并

task9

前四个不解释,枚举/搜索即可

1984
123456
chenlijie
$_$

后六个中,前四个都是单个单词,第五个为单词+空格+单词,第六个为单词+单词.不知道你们有没有注意到第二个cpp(或第十个cpp)中有个词典,直接在里面选单词搜即可

名言为we hold these truths to be self-evident

task10

可以通过dp技巧算出每个字母对应是加几次___,然后每个单词可以看成是每一位上的字母要用若干次,可以根据他的含义设计出\(dp_{i,j}\)表示长度为\(i\)的串,第\(j\)位算的次数,转移按照他的意思转移即可(每个真子串都要算一次)

猜你喜欢

转载自www.cnblogs.com/smyjr/p/12158980.html
wc