hdu 5045 状压dp
来源:互联网 发布:demo软件是什么意思 编辑:程序博客网 时间:2024/06/05 08:04
因为所有人做题数量差不能大于1 所以可以把每n道题看成一组 每一组必须由每个人完成一道的方式完成
dp[i][j] i代表当前题数 j代表当前队员状态
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;double dp[1005][1050],r[11][1005],ans,tmp;int T,n,m,i,j,first,t,k,MAX,kase=0;int main(){//freopen("C:\\Users\\Administrator\\Desktop\\input.txt","r",stdin); scanf("%d",&T); while(T--){ memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&m); MAX=1<<n; for(i=0;i<n;i++)for(j=1;j<=m;j++)scanf("%lf",&r[i][j]); ans=0;tmp=0; for(t=1;t<=(m+n)/n;t++){ first=(t-1)*n+1; for(j=0;j<n;j++)//枚举第几道题 for(i=0;i<MAX;i++)//枚举人物状态 for(k=0;k<n;k++)//枚举第几个人 if((i&(1<<k))==0) dp[first+j+1][i|(1<<k)]=max(dp[first+j+1][i|(1<<k)],dp[first+j][i]+r[k][first+j]); ans+=dp[first+n][MAX-1]; } printf("Case #%d: %.5lf\n",++kase,ans); for(i=0;i<n;i++)for(j=1;j<=m;j++)r[i][j]=0; for(i=0;i<m;i++)for(j=0;j<MAX;j++)dp[i][j]=0; } return 0;}
0 0
- HDU 5045 DP+状压
- hdu 5045 状压dp
- hdu 5045 Contest (状压DP)
- HDU - 5045 Contest(DP+状压)
- 【DP】 HDU 5045 Contest 状压
- HDU 5045 - Contest(dp + 状压)
- HDU 5045 Contest(状压DP)
- HDU-5045 Contest(状压DP)
- hdu 5045 Contest(dp)
- HDU 4628状压DP
- HDU 4539 状压DP
- HDU 1074 状压DP
- HDU 3182 状压DP
- hdu 4284(状压dp)
- hdu 2167(状压dp)
- hdu 4539(状压dp)
- hdu 4114(状压dp)
- HDU 4539 状压DP
- 微信6.0界面实现难点
- 5-37 整数分解为若干项之和 (20分)
- 5-38 数列求和-加强版 (20分)
- Android Screen Monitor真机抓屏教程
- C++实验—6矩阵求和
- hdu 5045 状压dp
- 网吧问题_双网卡
- 科技节编程大赛三等奖作品——杨逍
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- 关于OptiStruct提问的一些建议
- [C++]初识google test--单元测试神器
- 第七届 科技节 电子设计大赛 二等奖作品---智能家居
- 一些面试题
- 计算机作品大赛一等奖——基于上传下载模块的动态网站设计