HDU 5045 Contest
2014-09-28 11:37
218 查看
题目链接~~>
做题感悟:比赛时这题后来才写的,有点小尴尬,两个人商量着写写了很久才写出来,I want to Powerful ,I believe me .
解题思路:
遗憾 !感觉领悟能力太低 ,因为任意时刻任意两个人做的题不超过 1 题 ,so~> 必须是一轮一轮的来(n 道题一轮),每个人在一轮中只能做一题,如果多做一题就,有可能某个人没选,某个人选择了两道,这样就不符合规定了 。 用 1 代表选择,0 代表没选择,进行某一行的时候就选择上一行某位为 0 的状态 ,如果选择某位为 1的状态那么那个人就比某些人多选择了两门课程。比赛时分轮来的,一轮一轮的来,最后有可能剩余零头,每次进行 n * n 的DP ,零头单独处理
,每行每列选一个 。赛后看了大牛的解题报告顿时感觉太弱了,其实可以等到选满的时候然后转移一下,转移到当前行的 0 状态,这样就可以继续从上一行的 0 状态往下 dp 。
代码:
做题感悟:比赛时这题后来才写的,有点小尴尬,两个人商量着写写了很久才写出来,I want to Powerful ,I believe me .
解题思路:
遗憾 !感觉领悟能力太低 ,因为任意时刻任意两个人做的题不超过 1 题 ,so~> 必须是一轮一轮的来(n 道题一轮),每个人在一轮中只能做一题,如果多做一题就,有可能某个人没选,某个人选择了两道,这样就不符合规定了 。 用 1 代表选择,0 代表没选择,进行某一行的时候就选择上一行某位为 0 的状态 ,如果选择某位为 1的状态那么那个人就比某些人多选择了两门课程。比赛时分轮来的,一轮一轮的来,最后有可能剩余零头,每次进行 n * n 的DP ,零头单独处理
,每行每列选一个 。赛后看了大牛的解题报告顿时感觉太弱了,其实可以等到选满的时候然后转移一下,转移到当前行的 0 状态,这样就可以继续从上一行的 0 状态往下 dp 。
代码:
#include<iostream> #include<sstream> #include<map> #include<cmath> #include<fstream> #include<queue> #include<vector> #include<sstream> #include<cstring> #include<cstdio> #include<stack> #include<bitset> #include<ctime> #include<string> #include<iomanip> #include<algorithm> using namespace std ; #define INT __int64 const double INF = 99999999 ; const double esp = 0.0000000001 ; const double PI = acos(-1.0) ; const int MY = 100000 + 5 ; const int MX = 1024 + 5 ; int n ,m ; double dp[MX][MX] ,mp[MX][MX] ; int main() { int Tx ,cse = 1 ; cin>>Tx ; while(Tx--) { cin>>n>>m ; for(int i = 0 ;i < n ; ++i) for(int j = 0 ;j < m ; ++j) cin>>mp[j][i] ; for(int i = 0 ;i < m ; ++i) for(int j = 0 ;j < (1<<n) ; ++j) dp[i][j] = -1.0 ; for(int i = 0 ;i < n ; ++i) dp[0][1<<i] = mp[0][i] ; for(int i = 1 ;i < m ; ++i) for(int j = 0 ;j < (1<<n) ; ++j) for(int k = 0 ;k < n ; ++k) { if(dp[i-1][j] < 0 || (j&(1<<k))) continue ; if((j|(1<<k)) != (1<<n)-1) // 判断是否选满 dp[i][j|(1<<k)] = max(dp[i][j|(1<<k)] ,dp[i-1][j] + mp[i][k]) ; else dp[i][0] = max(dp[i][0] ,dp[i-1][j] + mp[i][k]) ; } double ans = 0 ; for(int i = 0 ;i < (1<<n) ; ++i) ans = max(ans ,dp[m-1][i]) ; cout<<"Case #"<<cse++<<": "<<fixed<<setprecision(5)<<ans<<endl ; } return 0 ; }
相关文章推荐
- hdu 5045 Contest--2014acm上海赛区网络赛
- HDU 5045 Contest 费用流
- HDU 5045 - Contest(dp + 状压)
- HDU 5045 Contest (状态压缩dp)
- [ACM] hdu 5045 Contest (状态压缩Dp)
- HDU 5045 Contest
- hdu 5045 Contest 2014 ACM/ICPC Asia Regional Shanghai Online
- hdu 5045 Contest dp+状态压缩 2014 ACM/ICPC Asia Regional Shanghai Online
- HDU 5045 Contest(状压DP)
- Hdu 5045 Contest (状态压缩dp)
- HDU - 5045 2014 ACM/ICPC Asia Regional Shanghai Online D - Contest (状压DP)
- HDU-5045 Contest 状态压缩DP求期望
- hdu 5045 - Contest(2014 ACM/ICPC Asia Regional Shanghai Online )概率dp
- HDU 5045(Contest-费用流)[template:费用流]
- hdu----(5045)Contest(数位dp)
- HDU 5045 Contest 期望+状压dp 2014 ACM/ICPC Asia Regional Shanghai Online
- HDU 5045 Contest(DFS 回溯)
- HDU - 5045 Contest(DP+状压)
- hdu 5045——Contest
- HDU-5045 Contest(状压DP)