随笔分类 -  动态规划—状态压缩

摘要:考虑当前合法的一个点集s,如果他合法,那么一定有一个完备匹配的点集包含这个点集,也就是两边都满足hall定理的话这两边拼起来的点集也满足要求 所以分别状压两边点集用hall定理转移判断当前点集是否合法,然后分别对两边点集的权值和排个序2point扫一下计算答案即可 阅读全文
posted @ 2019-06-11 15:03 lokiii 阅读(338) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-02 14:37 lokiii 阅读(8) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-14 22:02 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-04 22:43 lokiii 阅读(8) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-11-14 16:02 lokiii 阅读(23) 评论(0) 推荐(0)
摘要:孤独なんて記号では収まらない 心臓を抱えて生きてきたんだ! 阅读全文
posted @ 2018-10-25 17:52 lokiii 阅读(99) 评论(0) 推荐(0)
摘要:四海尧舜象,九州血脉长, 阅读全文
posted @ 2018-10-25 08:13 lokiii 阅读(115) 评论(0) 推荐(0)
摘要:纵身入尘埃里 雷雨大作我也放声而歌 阅读全文
posted @ 2018-10-24 22:06 lokiii 阅读(122) 评论(0) 推荐(0)
摘要:心臓のあたりで少年が ひたすらバタバタ駆け巡るまま 阅读全文
posted @ 2018-10-09 21:11 lokiii 阅读(195) 评论(0) 推荐(0)
摘要:宋营离此路途远 快马加鞭一夜还 阅读全文
posted @ 2018-09-27 16:24 lokiii 阅读(131) 评论(0) 推荐(0)
摘要:頓珍漢なことばかり まだ信じている 阅读全文
posted @ 2018-09-26 16:23 lokiii 阅读(98) 评论(0) 推荐(0)
摘要:真っ白に透けた 羽根を閉じたまま masshiro ni su ke ta bane wo to ji ta ma ma 阅读全文
posted @ 2018-09-25 16:54 lokiii 阅读(83) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-09-20 09:24 lokiii 阅读(1) 评论(0) 推荐(0)
摘要:我有病吧……明明直接枚举是否匹配就可以非要写hash,然后果然冲突了(……我个非酋居然还敢用hash 设f[s][i]为已选串状态为s并且最后一个串是i,还有预处理出g[i][j]表示最长有长为g[i][j]的i串后缀等于j串前缀这里,直接暴力匹配即可…… 然后注意到比较麻烦的事要求字典序最小,但是 阅读全文
posted @ 2018-09-14 09:56 lokiii 阅读(165) 评论(0) 推荐(0)
摘要:设f[s]为已经 从上到下 叠了状态为s的牛的最大稳定度,转移的话枚举没有在集合里并且强壮度 =当前集合牛重量和的用min(f[s],当前放进去的牛还能承受多种)来更新,高度的话直接看是否有合法集合的高度达到要求即可 cpp include include using namespace std; 阅读全文
posted @ 2018-09-08 19:44 lokiii 阅读(182) 评论(0) 推荐(0)
摘要:显然是状压,显然不可能把所有格子压起来 仔细观察发现只有机关周围的四个格子有用以及起点,所以我们用spfa处理出这些格子两两之间的距离(注意细节……这里写挂了好几次),然后设f[s][i]为碰完的机关石状态为s,现在在有用格子的第i个的最小停下次数,转移按照套路即可 cpp include incl 阅读全文
posted @ 2018-09-08 19:12 lokiii 阅读(255) 评论(0) 推荐(0)
摘要:先写了个next_permutation结果T了,于是开始写状压 设f[s][i]为选取状态为s,选的数模d为i的方案数,去重的话直接除以每个数字的出现次数的阶乘即可 cpp include include include using namespace std; const int N=20; i 阅读全文
posted @ 2018-09-05 10:23 lokiii 阅读(141) 评论(0) 推荐(0)
摘要:一开始状态设计错了…… 设f[i][s]为当前与根节点联通状况为s,最深深度为i 转移的话枚举当前没有和根联通的点集,预处理出把这些点加进联通块的代价(枚举s中的点和当前点的连边乘以i即可),然后用没联通点的集合b去更新f[i+1][s|b]即可 位运算处理用类似lowbit的东西 cpp incl 阅读全文
posted @ 2018-09-05 09:36 lokiii 阅读(118) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-08-19 22:44 lokiii 阅读(2) 评论(0) 推荐(0)
摘要:显然是状压,设f[i][j][k]为1到i行选j个king,并且第i行状态为k的方案数,判断是否可行然后枚举转移即可 先把可行状态预处理出来会变快 cpp include include using namespace std; const int N=2005; long long n,kk,a[ 阅读全文
posted @ 2018-07-29 21:17 lokiii 阅读(116) 评论(0) 推荐(0)