hdu 5045 状压dp
2016-05-24 23:36
295 查看
因为所有人做题数量差不能大于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;
}
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;
}
相关文章推荐
- # 'tools.jar'seems to be not in Studio classpath Please ensure JAVA_HOME points to JDK rather than J
- 《Linux内核分析》实践2
- 调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview
- 谈什么情况下C++编译器会自动生成default constructor
- poj_3669_广度优先搜索
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- printf()输出缓存问题
- [C++]初识google test--单元测试神器
- 关于OptiStruct提问的一些建议
- 【转载】3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解
- 团队计划第二期Backlog
- 网吧问题_双网卡
- Android Screen Monitor真机抓屏教程
- Express+mysql的博客(1)
- C++实验—6矩阵求和
- C++第六次实验
- 微信6.0界面实现难点
- 5-38 数列求和-加强版 (20分)
- 科技节编程大赛二等奖作品——凃讼林
- 六个最佳的编程文本编辑器