主题链接~~>

做题感悟:比赛时这题后来才写的,有点小尴尬。两个人商议着写写了非常久才写出来,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相关推荐

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

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

  2. hdu 5045 Contest--2014acm上海赛区网络赛

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5045 Contest Time Limit: 2000/1000 MS (Java/Others)   ...

  3. hdu 5045 费用流

    题意:      网选赛的一个题目,当时各种超时各种wa,哎! 题意是有n个人m道题,每个人对每道题都有一个ac率,每相邻的n到题目必须n个人每人一道,顺序无所谓,上下的m%n道只要不出现一个人做两道 ...

  4. HDU 4321 Contest 3

    题意:给定a和b,n,让你求b+a, b+2*a, .......b+n*a里面有多少1. 当统计第K位的时候 可以注意到 第 B+T*A 和 B+(T+2^(K+1))*A 位是相同的 那么 第K位 ...

  5. HDU 5045 状压DP 上海网赛

    比赛的时候想的是把n个n个的题目进行状压 但这样不能讲究顺序,当时精神面貌也不好,真是挫死了 其实此题的另一个角度就是一个n个数的排列,如果我对n个人进行状压,外面套一个按题目循序渐进的大循环,那么, ...

  6. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  7. HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

    /* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...

  8. HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3

    /* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意:给出排列 a[N],求所有区间的第 ...

  9. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others ...

最新文章

  1. 中国7位学者当选!又一院士名单公布
  2. 微信小程序_(表单组件)button组件的使用
  3. 对01背包的分析与理解(图文)
  4. LeetCode 764. 最大加号标志(DP)
  5. WORD填空题设置下划线?
  6. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...
  7. 浅谈Hybrid技术的设计与实现【转】
  8. Java中Jedis连接Linux上的Redis出现connect time out(解决方案)
  9. 关于SQL SERVER 2000在Windows Server 2003下不能使用的问题
  10. rollup打包js的注意点-haorooms博客分享
  11. python怎么打印路径,python 打印路径的几种结果
  12. 苹果macOS 13 Ventura 5K原生动态壁纸
  13. 【微信小程序】使图片占满整个屏幕的解决方案
  14. 椭圆型偏微分方程和格林函数
  15. XXX高校数字化校园数据中心建设方案
  16. Gazebo機器人仿真學習探索筆記(五)環境模型
  17. 打破 Dockershim 移除焦虑,且看Rancher 如何应对
  18. A simp task WOJ
  19. nao机器人拆解_如何获得明了清晰的人生
  20. 预测2022年CES科技趋势:元宇宙和NFT引关注

热门文章

  1. 小程序 | 微信小程序二级选择器
  2. 虚拟服务器选那个存储好,如何选择虚拟环境中的存储?
  3. java中render用法_如何在React中不在render函数中使用setState
  4. 流量主系列|独立表情包壁纸喝酒神器功能微信小程序源码
  5. LYCMS自动采集影视视频网源码 安全无后门
  6. System.Runtime.InteropServices浅见
  7. jquery 自动完成 Autocomplete
  8. youtube 播放列表
  9. C++——如何重载*(指针)操作符
  10. Spring学习笔记专题二