Headmaster's Headache UVA - 10817 状态压缩
2017-04-22 21:16
411 查看
用两个集合来实现的状态压缩。。
基本是照着代码敲的。。。
收货;
(1):stringsstream要在这里会用l。。。
(2)这里的 if(i>m)这个分界放的好。。
还有就是要理解这里到两个集合为什么是这样。。
还要知道这个记忆化很好写。。
基本是照着代码敲的。。。
收货;
(1):stringsstream要在这里会用l。。。
(2)这里的 if(i>m)这个分界放的好。。
还有就是要理解这里到两个集合为什么是这样。。
还要知道这个记忆化很好写。。
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<string> #include<cstring> #include<iomanip> #include<iostream> #include<stack> #include<cmath> #include<map> #include<vector> #define ll long long #define inf 0x3f3f3f3f #define INF 1e9 #define bug1 cout<<"bug1"<<endl; #define bug2 cout<<"bug2"<<endl; #define bug3 cout<<"bug3"<<endl; #include<sstream> using namespace std; #define sf scanf #define pf printf #define mem(a,b) memset(a,b,sizeof(a)); const int maxn=130; const int maxs=8; int m,n,s; int st[maxn]; int c[maxn]; //2017年4月22日20:56:20 int d[maxn][(1<<maxs)+5][(1<<maxs)+5]; int dp(int i,int s0,int s1,int s2){ if(i==m+n)return s2==(1<<s)-1?0:INF; int &ans=d[i][s1][s2]; if(ans>=0)return ans; ans=INF; if(i>=m)ans=dp(i+1,s0,s1,s2); int m0=st[i]&s0,m1=st[i]&s1; s0=s0^m0;s1=(s1^m1)|m0;s2=s2|m1; ans=min(ans,c[i]+dp(i+1,s0,s1,s2)); return ans; } /* int main() { int x; string line; while(getline(cin, line)) { stringstream ss(line); ss >> s >> m >> n; if(s == 0) break; for(int i = 0; i < m+n; i++) { getline(cin, line); stringstream ss(line); ss >> c[i]; st[i] = 0; while(ss >> x) st[i] |= (1 << (x-1)); } memset(d, -1, sizeof(d)); cout << dp(0, (1<<s)-1, 0, 0) << "\n"; } return 0; } */ int main(){ string line; while(getline(cin,line)){ stringstream ss(line); ss>>s>>m>>n; if(s==0)break; for(int i=0;i<n+m;++i){ getline(cin,line); stringstream ss(line); ss>>c[i]; st[i]=0; int x; while(ss>>x)st[i]|=(1<<(x-1)); } mem(d,-1); pf("%d\n",dp(0,(1<<s)-1,0,0)); } }
相关文章推荐
- UVA - 10817 Headmaster's Headache 状态压缩
- Uva 10817 - Headmaster's Headache(状态压缩DP)
- UVa 10817 - Headmaster's Headache (简单DP 状态压缩)
- uva 10817 - Headmaster's Headache ( 状态压缩dp)
- UVa 10817 - Headmaster's Headache ( 状态压缩dp)
- UVA 10817 Headmaster's Headache(dp 状态压缩 01背包)
- Headmaster's Headache UVA - 10817 (状态压缩dp+01背包)
- UVA10817 Headmaster's Headache 状态压缩的01背包
- Uva 10817 Headmaster's Headache (DP+ 状态压缩)
- uva 10817 - Headmaster's Headache ( 状态压缩dp)
- UVA 10817-Headmaster’s Headache(状态压缩DP)
- UVA10817-----Headmaster's Headache-----状态压缩的背包(记忆化搜索实现)
- 10817 - Headmaster's Headache(状态压缩)
- uva 10817 Headmaster's Headache(DP 3进制压缩,4级)
- UVA 10817 Headmaster's Headache
- UVA 10817 Headmaster's Headache [动态规划] [状压dp]
- UVA - 10817 Headmaster's Headache
- UVA 10817 Headmaster's Headache
- uva 10817 Headmaster's Headache 出发dp 位计算
- UVA 10817 Headmaster's Headache(状压dp)