状压DP
zwjdd_qwq
这个作者很懒,什么都没留下…
展开
-
洛谷P3959 NOIP2017D2T2宝藏
一个玄妙状压 解析在代码里 /* 感到恐怖,为什么会花式爆int */ #include<iostream> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #include<cstdio> using namespace...原创 2019-07-30 20:30:01 · 112 阅读 · 0 评论 -
bzoj3900 交换茸角(状压DP)
神题一道,入手毫无思路 还是头一次写这种找下界的状压DP,首先,n头路,我们的最大交换次数为n-1次 因为把所有鹿的茸角打乱重新分配的话,只需要n-1次就可按照从小到大的顺序完成重排 这也是差值最小的方法,但是如果这样都不合法的话,说明这个集合没法重排,输出-1 好了,那么说说怎么优化 对于每一个集合,只要他可以重排,我们就可以通过∣S∣|S|∣S∣-1的次数完成重排,那么,分成的集合越多,我们所...原创 2019-08-19 16:13:00 · 117 阅读 · 0 评论 -
bzoj2064 分裂 (上下界状压DP)
和bzoj3900有异曲同工之妙,然而,即便写过了3900,蒟蒻还是没想出正解 这次的上界变成了n+m-2即是把所有的打乱,按照要求的m个一个一个拼起来,最后两块一定相等,所以-2。这样的前提是这两个集合的子块大小和相等,那么按照3900的套路,我们把集合尽量分成和相等的子集,分开处理,那么有几个集合,我们就可以减去几个2 如何实现呢,我们使用lowbit,lowbit求的是最后一个1的位置 那么...原创 2019-08-19 16:20:33 · 112 阅读 · 0 评论 -
洛谷P3112 [USACO14DEC]后卫马克Guard Mark
n<20 一道比较基础的状压DP,虽然正解是贪心 dp[S],表示选取的牛集合为S时最大载重量 然后就很简单了 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; const int maxn = (1<...原创 2019-09-09 23:11:09 · 104 阅读 · 0 评论 -
2019郑州课件·动态规划」JXOI2012 奇怪的道路
神仙状压题 虽然想到了怎么压,但是完全不敢写… f[n][m][state]f[n][m][state]f[n][m][state]表示前n个点,匹配了m条边,前K个点的奇偶状态为statestatestate的方案数 愉快的转移吧 #include<iostream> #include<cstdio> #include<cstdlib> #include<...原创 2019-10-08 20:36:51 · 91 阅读 · 0 评论