RQNOJ 140 分配时间:dp
题目链接:https://www.rqnoj.cn/problem/140
题意:
小王参加的考试是几门科目的试卷放在一起考,一共给t分钟来做。
他现在已经知道第i门科目花k分钟可以拿到w[i][k]分。
写名字需要的时间为name(他写自己的名字很慢)
如果放弃某一门的考试(花的时间为0),那么名字也就不用写了。
问他最高能得几分。
题解:
表示状态:
dp[i][j] = max score
i:考虑到第i们科目
j:当前花费的时间
找出答案:
max dp[n][j]
如何转移:
now: dp[i][j]
dp[i+1][j+k] = max dp[i][j] + w[i][k] + (k==0 ? 0 : name)
枚举k为当前科目用的时间。k为0时相当于放弃本科目,也就不用写名字。
边界条件:
dp[0][0] = 0
others = -1
AC Code:
1 // state expression: 2 // dp[i][j] = max score 3 // i: considering ith subject 4 // j: cost time 5 // 6 // find the answer: 7 // max dp[n][j] 8 // 9 // transferring: 10 // now: dp[i][j] 11 // dp[i+1][j+k] = max dp[i][j] + w[i][k] + (k==0 ? 0 : name) 12 // 13 // boundary: 14 // dp[0][0] = 0 15 // others = -1 16 #include <iostream> 17 #include <stdio.h> 18 #include <string.h> 19 #define MAX_N 15 20 #define MAX_T 105 21 22 using namespace std; 23 24 int n,t; 25 int name; 26 int ans; 27 int w[MAX_N][MAX_T]; 28 int dp[MAX_N][MAX_T]; 29 30 void read() 31 { 32 cin>>t>>n>>name; 33 for(int i=0;i<n;i++) 34 { 35 w[i][0]=0; 36 for(int j=1;j<=t;j++) 37 { 38 cin>>w[i][j]; 39 } 40 } 41 } 42 43 void solve() 44 { 45 memset(dp,-1,sizeof(dp)); 46 dp[0][0]=0; 47 for(int i=0;i<n;i++) 48 { 49 for(int j=0;j<=t;j++) 50 { 51 if(dp[i][j]!=-1) 52 { 53 for(int k=0;k<=t;k++) 54 { 55 int tim=j+k+(k==0?0:name); 56 if(tim<=t) dp[i+1][tim]=max(dp[i+1][tim],dp[i][j]+w[i][k]); 57 else break; 58 } 59 } 60 } 61 } 62 ans=0; 63 for(int i=0;i<=t;i++) 64 { 65 ans=max(ans,dp[n][i]); 66 } 67 } 68 69 void print() 70 { 71 cout<<ans<<endl; 72 } 73 74 int main() 75 { 76 read(); 77 solve(); 78 print(); 79 }
转载于:https://www.cnblogs.com/Leohh/p/7461299.html
RQNOJ 140 分配时间:dp相关推荐
- 硅谷一流成功人士是如何分配时间的?
点击"技术领导力"关注∆ 每天早上8:30推送 口 述:劳拉·万德坎姆[美] 时间管理专家 来 源:TED演讲.正和岛 时间不是省出来的 当人们发现我写关于时间管理的文章时,他们 ...
- 新概念每天学多少合适? 新概念学习方法汇总?上班族该如何分配时间学新概念?
新概念每天学多少合适 每天不要过多的记忆,有5-6句话足以,多了什么也记不住.科学的说法是一天记忆8句话,我们还是不要那么标准了,少点好.最好能把学到的组成简单的对话,这样一问一答自己都可以练习口语了 ...
- 1642: [Usaco2007 Nov]Milking Time 挤奶时间(dp)
1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 935 Solved: 5 ...
- 会议室分配时间最长_论文导论动态任务分配GPU上图计算的高效处理方式
编者按GPU作为一种硬件,相比较于CPU来说,有更多的并行度和更高的带宽,在图像处理领域取得了非常好的应用效果.越来越多的研究也正试图将GPU也应用到图计算领域中,然而GPU适合进行规则运算,但是图是 ...
- 会议室分配时间最长_面试真题 | 3个会议室,现在有6个会议,你会如何安排?vvvv...
笔试名次靠前,如何稳赢不输?笔试名次靠后,如何逆袭翻盘?为助大家顺利面试成"公",小政将持续分享面试备考技巧以及历年面试真题,敬请关注哦! 提醒:面试是一场靠说的考试,拿到题后一定 ...
- YbtOJ#20067-[NOIP2020模拟赛B组Day5]糖果分配【dp】
正题 题目链接:http://noip.ybtoj.com.cn/contest/102/problem/1 题目大意 nnn个xix_ixi在[li,ri][l_i,r_i][li,ri]中随 ...
- 换种思维看互联网公司分配时间!
当一个人将百分之九十五的精力投入一件事的时候,他能从中收获到自己想要的.以此类推,当一个公司将百分之九十五的精力放在了与公司无关紧要的事情上时候,这个公司的收益可能最多也就是百分之五,这与我们想要的大 ...
- 华为 会议室分配时间最长_华为“办公室新物种”来了,智慧办公一屏到位
阿栗是广州一家生物公司的IT主管,布置公司视频会议的责任,通常落在他的肩上.每次有重要的会议,领导提前一天就频繁打电话给他,问设备调试得怎么样了,叮嘱他千万不要出现差池.阿栗说,这已成为他的一种精神负 ...
- 华为 会议室分配时间最长_华为年报折射出的人才与专利价值
2019年3月29日,华为发布了2018年的年报,全球销售收入7212亿元,同比增长19.5%:净利润593亿元,同比增长25.1%,交出了不错的成绩单. 热心的媒体总不忘替华为的员工算下工资,但算的 ...
- 启建教育:2020年一级消防工程师备考,该怎样合理分配时间?
首先,要做到每天多次学习 我们可以先回想一下,自己每天的学习时间有多少?能记住的东西又有多少?因为人们很难做到过目不忘,那么就需要我们记东西时可以反复的记忆.我们记忆的时候可以将碎片化的时间利用起来, ...
最新文章
- MD5算法 —— C语言实现(字符串的加密)
- DCMTK:生成一个C ++标头,为DICOM标签定义符号名
- RabbitMQ之主题(Topic)
- 【今晚七点】:对话余世兵——从OnVideo到快手云剪
- 使用maven构建的Spring boot项目在开始搭建的时候出的一些错误
- jQuery : ddSlick 自定义select下拉框 custom drop down with images and description.
- 公式化学习urllib(第一卷)
- Spinlock 简介(转)
- python比较两个列表不同部分_Python实现比较两个列表(list)范围
- 获取当前 jar 包的运行路径
- 谈谈程序员的绩效考核
- html怎么把桌面的图片放大缩小,css怎么让图片随屏幕大小改变?
- android图片编辑加文字,图片编辑加字安卓版
- 【Educoder作业】※ 数值信息——除二取余
- 机器学习算法——手动搭建决策树分类器(代码+作图)
- python基础语法25_Python基础语法习题参考(0-9关)
- 4路服务器cpu位置,4路cpu服务器
- 利用Qt来进行文件后缀的更改
- 湖南省第六届大学生计算机程序设计竞赛---弟弟的作业
- 家庭助理简介(home assistant)
热门文章
- vscode 运行 python
- php事务和回滚,php – Mysql事务:提交和回滚
- matlab设置ga算法,matlab遗传算法ga函数
- oracle样例数据库,创建和准备Oracle样例数据库
- DButils入门及结果处理器选择
- 数据读写 CommonCurd
- 使用ZooKeeper ACL特性进行znode控制
- 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。...
- 保持 SSH 连接,防止长时间未动作断线
- 经典:从追MM谈Java的23种设计模式