状压dp
hannibal_lecter_
这个作者很懒,什么都没留下…
展开
-
poj2411【状压dp】
#pragma GCC optimize(2) #include<cstdio> #include<cstring> using namespace std; typedef long long ll; const int maxn = 1e5+5; int n, m, yy[1<<12]; ll dp[12][1<<12]; void init()...原创 2019-02-27 21:25:34 · 134 阅读 · 0 评论 -
P2622 关灯问题II【状压dp】
#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+5; int Case = 1; struct node{ int s, num; }; int a[105][1050], vis[1000005]; i...原创 2019-02-27 21:36:08 · 138 阅读 · 0 评论 -
P1879 [USACO06NOV]状压dp
#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+5; const int mod = 100000000; int n, m, cc[20][20], st[1<<13], mp[13], dp[13...原创 2019-02-27 21:38:03 · 118 阅读 · 0 评论 -
P1896 [SCOI2005]【状压dp】
#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+5; int Case = 1; int n, m; ll y[1<<10], dp[10][1<<10][100], mp[10], nu...原创 2019-02-27 21:39:20 · 89 阅读 · 0 评论 -
[Wc2008]游览计划【斯坦纳树】
斯坦纳树的问题模型是:有一个图,要求保留图中最少的边/最小的边权和使得某k个点相互连通。最小生成树是斯坦纳树的一种特殊情况。 我们用f[i]][j][s]表示方格中i,j位置与各个景点之间的联通情况。 如果景点数为3时,111表示全部联通, 101表示第二个景点没有联通。。。 当然第x个景点的 f[i][j][(1<<x)] = 0,其他的情况先初始化为inf。 状态怎么转移? 有两种...原创 2019-02-28 21:42:27 · 226 阅读 · 0 评论 -
UVA - 11825【状压DP】
题意很容易懂,注意一点相邻不代表联通。 首先要知道有两种状态 1,第i台计算机影响的所有计算机的状态。(p[18]) 2,攻击哪些状态的计算机可以使服务瘫痪。(c[1<<18]) 使dp[s]代表使状态为s的计算机最大数量的服务瘫痪。(dp[1<<18]) 状态转移方程就是 dp[s] = max(dp[s], dp[s^s0]+1)(s0是s的子集) 问题就可以解决...原创 2019-03-01 21:14:43 · 95 阅读 · 0 评论 -
HDU-2825[AC自动机+状压dp]
不要被状压吓倒了。。和之前用AC自动机求构造字符串的数量方法类似,但是这个问题要多开一维状态表示包含多少特殊的串。 dp[i][j][k]表示长度为i已经匹配到j的串包含特殊串的状态为k的数量。 转移方程是dp[i][u][s|ed[u]] += dp[i-1][j][s](u = j->ch) #include<bits/stdc++.h> using namespace st...原创 2019-04-09 00:36:12 · 119 阅读 · 0 评论