WC2015-2019
Posted smyjr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
(abmod 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}^kinom{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}inom{n}{i}),最后乘法原理合并
task9
前四个不解释,枚举/搜索即可
1984
123456
chenlijie
$_$
后六个中,前四个都是单个单词,第五个为单词+空格+单词,第六个为单词+单词.不知道你们有没有注意到第二个cpp(或第十个cpp)中有个词典,直接在里面选单词搜即可
名言为we hold these truths to be self-evident
task10
可以通过dp技巧算出每个字母对应是加几次___
,然后每个单词可以看成是每一位上的字母要用若干次,可以根据他的含义设计出(dp_{i,j})表示长度为(i)的串,第(j)位算的次数,转移按照他的意思转移即可(每个真子串都要算一次)
以上是关于WC2015-2019的主要内容,如果未能解决你的问题,请参考以下文章
Linux 150命令之查看文件及内容处理命令 more split file diff paste wc dps2unix