codechef August Challenge 2014 第五个题目
来源:互联网 发布:ubuntu怎么配置ip 编辑:程序博客网 时间:2024/05/16 12:34
题意:点击打开链接
题目链接:点击打开链接
思路:入门的状态压缩,如果按照行一行一行下来(选衣服)去选的话状态太多,无法压缩,考虑到题目中n比较小,所以改用按照列一列一列推,把人压缩到二进制里面,1表示这个人已经选了,0表示还没有选,然后递推就可以达到答案!
#include<set>#include<queue>#include<cmath>#include<cstdio>#include<vector>#include<string>#include<utility>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#define Inf (1<<30)#define LL long long#define MOD 1000000007#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;const int MM=100010;LL dp[1<<10];int n;int vis[11][101];void read(int x){ int res=0; char ch; do { ch=getchar(); if(ch==' '||ch=='\n') { vis[x][res-1]=1; res=0; } else res=res*10+ch-'0'; } while(ch!='\n');}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d\n",&n); memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++)read(i); dp[0]=1; for(int i=0;i<100;i++) { for(int j=(1<<n)-1;j>=0;j--)//这里用到了一个优化空间的技巧,类似于01背包的空间优化,已经用了的空间可以覆盖掉,从后面开始递推就行了 { if(dp[j]==0)continue; for(int k=0;k<n;k++) { if(vis[k][i]==0)continue; if(j&(1<<k))continue; dp[j|(1<<k)]+=dp[j]; dp[j|(1<<k)]%=MOD; } } } printf("%lld\n",dp[(1<<n)-1]); } return 0;}
0 0
- codechef August Challenge 2014 第五个题目
- CodeChef May Challenge 2014
- codechef July Challenge 2014
- codechef December Challenge 2014
- Codechef July Challenge 2014部分题解
- codechef November Challenge 2014 .Chef and Churu
- codechef December Challenge 2012
- codechef December Challenge 2012
- codechef December Challenge 2012
- codechef May challenge A
- codechef May challenge B
- codechef May challenge C
- Codechef February Challenge坑
- CodeChef March Challenge 2015
- Codechef September Challenge 2015
- codechef February Challenge 2016
- Codechef April Challenge 2017
- codechef:April Challenge 2014: Cards, bags and coins
- java 获取文件名(不包括文件的后缀)和文件重命名
- UVA - 10534Wavio Sequence(LIS)
- usb serial驱动流程分析
- leetcode Best Time to Buy and Sell Stock III
- 在ROS的PPPOE IP变的时候自动修改DNS记录,实现DDNS
- codechef August Challenge 2014 第五个题目
- hdu2417并查集
- 一个带动画的页面底部的TabBar的实现
- 异常处理表
- 桥接模式处理下机计算金额问题
- WDF驱动模型
- Android事件处理
- 对微信的一点研究
- 经典SQL例题