![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
状压dp
Daniel__d
这个作者很懒,什么都没留下…
展开
-
HDU4758-AC自动机+状压dp
HDU4758题目描述题解代码#include<bits/stdc++.h>using namespace std;int f[105][105][305][4],tr[551][2],val[550],cnt,n,m,ans,fail[550],a[2],b[2],t;char s[150];const int mod=1000000007;void clear(){ cnt=ans=0; memset(tr,0,sizeof(tr)); memset(val,0,si原创 2020-07-26 11:14:11 · 122 阅读 · 0 评论 -
HDU2825-AC自动机+状压dp
HDU2825题目描述题解代码#include<bits/stdc++.h>using namespace std;int dp[28][110][1<<10],tr[110][26],val[110],cnt,n,m,kk,ans,fail[110];char s[15];const int mod=20090717;void clear(){ cnt=ans=0; memset(tr,0,sizeof(tr)); memset(val,0,sizeof(v原创 2020-07-26 10:51:33 · 175 阅读 · 0 评论 -
P1896-状压dp
P1896题目描述题解与普通的状压dp几乎相同,只是多了一维来存储选的个数初始化:f[0][1][0]=1f[0][1][0]=1f[0][1][0]=1代码#include<bits/stdc++.h>#define int long long#define M 100009using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='原创 2020-07-21 11:00:50 · 126 阅读 · 0 评论 -
UVA11825-状压dp,枚举子集
UVA11825题目描述题解g[i]g[i]g[i]表示选择iii对应的子集的电脑,所覆盖的电脑f[i]f[i]f[i]表示只选择iii对应的子集中的电脑,最多分成几组那么状态转移方程为if(g[j]==((1<<n)-1)) f[i]=max(f[i],f[i^j]+1);代码#include<bits/stdc++.h>#define M 100009using namespace std;int read(){ int f=1,re=0;char c原创 2020-07-21 10:51:09 · 182 阅读 · 0 评论 -
状压dp基础习题
状压dp基础习题常见位运算操作例题T1 HDU1565(基础状压dp)题解非常基础的一道状压dp我们用二进制来表示每一行取数情况,111表示取,000表示不取很容易得到状态转移方程:f[i][j]=max(f[i][j],f[i−1][k]+ans[i][j]);f[i][j]=max(f[i][j],f[i-1][k]+ans[i][j]);f[i][j]=max(f[i][j],f[i−1][k]+ans[i][j]);当且仅当jjj&k==0k==0k==0时代码#inc原创 2020-07-21 10:45:14 · 288 阅读 · 0 评论