意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩。它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000)。

主题链接:

pid=5045" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5045

——>>设dp[i][j]表示已出战了前i - 1道题目,已出战的人的状态序列为j,如今要做第i道题目的最大期望。则最后要求的结果为max{dp[M][k]}。。

状态转移方程:dp[i][nState] = max(dp[i][nState], dp[i - 1][j] + fSolve[k][i]);

将M进行N个N个地分块,为了让当前块加上上一个分块的结果。则要将上一个分块完毕时的结果存入当前块要利用的初始状态的结果。即:

                if (nState == (1 << N) - 1)
{
nState = 0;
}

上代码:

#include <cstdio>
#include <cstring>
#include <algorithm> using std::max; const int MAXN = 10;
const int MAXM = 1000 + 5; int N, M;
double fSolve[MAXN + 1][MAXM];
double dp[MAXM][1 << MAXN];
double fRet; void Read()
{
scanf("%d%d", &N, &M);
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= M; ++j)
{
scanf("%lf", &fSolve[i][j]);
}
}
} int CalOnes(int nNum)
{
int nRet = 0; while (nNum)
{
if (nNum & 1)
{
nRet++;
}
nNum >>= 1;
} return nRet;
} void Dp()
{
fRet = 0.0;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= M; ++i)
{
for (int j = 0; j < (1 << N); ++j)
{
for (int k = 1; k <= N; ++k)
{
if (j & (1 << (k - 1))) continue;
if (CalOnes(j) != (i - 1) % N) continue;
int nState = j | (1 << (k - 1));
if (nState == (1 << N) - 1)
{
nState = 0;
}
dp[i][nState] = max(dp[i][nState], dp[i - 1][j] + fSolve[k][i]);
if (i == M)
{
fRet = max(fRet, dp[i][nState]);
}
}
}
}
} int main()
{
int T, nCase = 0; scanf("%d", &T);
while (T--)
{
Read();
Dp();
printf("Case #%d: %.5f\n", ++nCase, fRet);
} return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

hdu - 5045 - Contest(国家压缩dp)的更多相关文章

  1. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

  2. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  3. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  4. Hdu-1565 电网接入(1) (国家压缩dp获得冠军

    正方形格通路(1) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDU 3001(状态压缩dp)

    状态压缩dp的第一题! 题意:Mr ACMer想要进行一次旅行,他决定访问n座城市.Mr ACMer 可以从任意城市出发,必须访问所有的城市至少一次,并且任何一个城市访问的次数不能超过2次.n座城市间 ...

  6. hdu 4856 Tunnels 状态压缩dp

    Tunnels Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem ...

  7. HDU 3001【状态压缩DP】

    题意: 给n个点m条无向边. 要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小. 思路: 三进制状态压缩DP,0代表走了0次,1,2类推. 第一次弄三进制状态压缩DP,感觉重点是对数 ...

  8. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  9. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

随机推荐

  1. Swift - 工具条(UIToolbar)的用法

    1,UIBarButtonItem是工具条按钮,有如下5种init初始化方法: (1)初始化为普通图片按钮 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...

  2. POJ 1159 - Palindrome 优化空间LCS

    将原串和其逆序串的最长公共子序列求出来为M..那么2*n-M就是所需要加的最少字符..因为求出的M就是指的原串中"潜伏"的最长回文.. 问题转化为求LCS..但是n最大到5000. ...

  3. phprpc 使用实例(同时有Java、Android和Delphi客户端的例子)

    PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过 ...

  4. AVOS_百度百科

    AVOS_百度百科 AVOS 目录 公司产品 AVOS 是 YouTube 创始人 Chad Hurley 和 Steve Chen(陈士骏)创立的互联网公司.    编辑本段公司产品    产品包括 ...

  5. Android应用中Back键的监听及处理

    MainActivity如下: package cn.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; ...

  6. ZOJ 3794 Greedy Driver

    两次SPFA 第一关找:从1没有出发点到另一个点的多少是留给油箱 把边反过来再找一遍:重每一个点到终点最少须要多少油 Greedy Driver Time Limit: 2 Seconds       ...

  7. hdu4280(最大流)

    传送门:Island Transport 题意:有N个岛屿 M条无向路 每个路有一最大允许的客流量,求从最西的那个岛屿最多能运用多少乘客到最东的那个岛屿. 分析:无向图正反都加弧,权值一样,这题点多, ...

  8. sdbntrjm57k

    http://www.zhihu.com/collection/24337307 http://www.zhihu.com/collection/24337259 http://www.zhihu.c ...

  9. hdu 2838 Cow Sorting(树状数组)

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  10. WebView混合开发

    现在开发APP的方式变化,不在是传统的APP开发了,有很多的APP慢慢的转向混合模式的开发,使用WebView是传统开发模式转向混合模式的桥梁工具,结合了很多的Web前端开发界面,使得开发的速度加快, ...