hdu 2167 Pebbles(状态压缩DP)
来源:互联网 发布:数据库的触发器怎么写 编辑:程序博客网 时间:2024/05/17 06:10
数据处理起来很恶心。感觉加这个用字符串输入没什么必要,除了让人容易把题目理解错。。。。
#include<stdio.h>#include<string.h>#include<math.h>#define N 16int dp[N][1<<N],flag[N],st[1<<N],a[505],mark[N][N];int ss,tt;char t[N],s[N][N*5];int Max(int x,int y){ if(x>y) return x; else return y;}int change(char *s,int k){ int ans; if(k==1) ans=s[0]-'0'; else if(k==2) ans=(s[0]-'0')*10+(s[1]-'0'); return ans;}void fun(){ int i,j,k,l; int ln; k=0; for(i=1; i<=ss; i++) { l=0;ln=strlen(s[i]); for(j=0; j<ln; j++) { if(s[i][j]!=' ') t[l++]=s[i][j]; else { a[k++]=change(t,l); l=0; } }a[k++]=change(t,l); } tt=(int)sqrt(k); k=0; for(i=1; i<=tt; i++) { flag[i]=(1<<tt)-1; for(j=1; j<=tt; j++) mark[i][j]=a[k++]; } return ;}void Init(){ int i,j; int n; n=1<<tt; j=1;st[0]=0; for(i=0; i<n; i++) { if(!(i&(i<<1))) st[j++]=i; } ss=j; return ;}void Output(){ int i,j,k; memset(dp,0,sizeof(dp)); for(i=1; i<=tt; i++) { for(j=0; j<ss; j++) { int temp=0; for(k=1; k<=tt; k++) { int ttt=st[j]>>(tt-k); if(ttt&1)temp+=mark[i][k]; } for(k=0; k<ss; k++) { if(!(st[j]&st[k])&&!(st[j]&(st[k]<<1))&&!(st[j]&(st[k]>>1))) dp[i][st[j]]=Max(dp[i][st[j]],dp[i-1][st[k]]+temp); } } } int max=0; for(i=0; i<ss; i++) max=Max(dp[tt][st[i]],max); printf("%d\n",max); return ;}int main(){ while(gets(s[1])) { int i=2; while(gets(s[i++]),strcmp(s[i-1],"")!=0); ss=i-2; fun(); Init(); Output(); } return 0;}
- hdu 2167 Pebbles(状态压缩DP)
- hdu 2167 Pebbles (状态压缩dp)
- HDU 2167 Pebbles(状态压缩dp)
- hdu 2167 Pebbles (状态压缩DP)
- hdu 2167 Pebbles 状态压缩dp
- hdu 2167 Pebbles 状态压缩dp
- HDU 2167 Pebbles(轮廓线,状态压缩DP)
- hdu 2167 Pebbles(状态压缩)
- Hdu 2167 Pebbles 状态压缩
- hdu-2167-Pebbles--炮兵布阵之类的 状态压缩dp
- hdu 2167 Pebbles 状态dp
- 【状态DP】 HDU 2167 Pebbles
- HDOJ 2167 Pebbles (状态压缩dp)
- [hdu2167]Pebbles(状态压缩dp)
- 状态压缩(3) Hdu 2167 Pebbles
- [hdu2167][DP][状态压缩]Pebbles
- HDU 1565 方格取数(1) HDU 2167 Pebbles 基础状态压缩动态规划
- HDU 2167 Pebbles (状压DP)
- java排序 内部排序 交换排序
- 零碎小知识点记录
- UVa 1388 - Graveyard
- nyoj-168-房间安排
- Havel-Hakimi定理(判断一个序列是否可图)
- hdu 2167 Pebbles(状态压缩DP)
- 渤海商品现货盘口术语解释
- POJ 1840 Eqs
- 转载_Linux下如何查看系统启动时间和运行时间
- NYOJ 72 Financial Management
- Ultraiso使用心得
- 滤波器选择
- 求出100以内的所有素数--筛选法和根号法
- LeetCode-Gray Code