![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
状压dp
状压dp
wind__whisper
qwq
展开
-
P3581 [POI2015] CZA(状压)
状压码农题原创 2022-05-13 07:48:00 · 174 阅读 · 0 评论 -
P3226 [HNOI2012]集合选数(状压、构造)
耳目一新的构造原创 2022-04-26 11:57:01 · 156 阅读 · 0 评论 -
AT2293 [AGC009D] Uninity(贪心、状压)
贪心原创 2022-04-20 21:16:32 · 197 阅读 · 0 评论 -
洛谷P2761:软件补丁问题(状压、分层图最短路)
分层图最短路练习原创 2022-01-27 20:32:58 · 712 阅读 · 0 评论 -
CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)
解析比较复杂的一道题看数据范围,我们肯定要从种类很少的颜色入手因为第二种加边方式和颜色密切相关所以设计disi,kdis_{i,k}disi,k表示 i 号节点到颜色为 k 的节点的最小步数通过对每个k bfs一遍就能得出答案然后两个点之间的距离就可以写出转移式:fi,j=min(∣i−j∣,mink8disi,k+disj,k+1)f_{i,j}=\min (|i-j|, \min_k^8dis_{i,k}+dis_{j,k}+1)fi,j=min(∣i−j∣,kmin8disi,原创 2021-11-17 10:47:21 · 666 阅读 · 0 评论 -
CF1313D:Happy New Year(状压dp)
解析比较妙的一道题首先的一个技巧是把一条线段拆成左和右两个端点顺便也就有了离散化利用k的关键限制,压缩每个点覆盖线段的状态需要动态更新每一位所对应的线段是哪条代码#include<bits/stdc++.h>using namespace std;#define ll long longconst int N=2e5+100;const int mod=2009;ll read(){ ll x=0,f=1;char c=getchar(); while(!isdi原创 2021-11-05 19:06:43 · 199 阅读 · 0 评论 -
P3160:局部极小值(容斥、状压)
解析又是一道我不会的容斥题qwq本题的一个关键性质:答案有解时,极小值不超过8个所以可以对其进行状压考虑从小到大填数那么在极小值填完之前,它的八连通必然是不能填的设计dpi,sdp_{i,s}dpi,s表示从小到大填了i个数,已经填完的极小值状态为s的方案数不难作出转移但是这样会统计一些不合法的方案!有的非极小值可能由于周围全是非极小值,又随便填,导致成为了极小值所以要扣去所有非极小值成为极小值的方案方法就是dfs枚举哪些非极小值成为极小值dp再按这些非极小值的个数的奇偶性进行容斥原创 2021-11-02 10:59:14 · 145 阅读 · 0 评论 -
状态压缩:枚举子集(最优组队)(ybtoj)(动态规划)
解析很裸的状压dp但是直接暴力的话状态2n,枚举2n乘在一起会T诶怎么办呢?使用下面这个循环,就可以保证只会枚举当前状态s的子集for(int i=(s-1)&s;i;i=(i-1)&s){ ........ }证明举举例子就挺明显了为什么不重不漏呢?首先i肯定单调不降,所以不重是很明显的我们只需要证明不漏了,也就是(i-1&s,i-1]没有s的子集也挺明显的首先前提条件是i是s的子集然后i减了1会发生什么呢?如果i最后一位是1减成0显然还是.原创 2021-06-20 00:15:36 · 349 阅读 · 3 评论