hdu-1789 :Doing Homework again
2016-05-30 17:27
423 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1789
我的思路:先在输入过程中求出总被减分数sum,再对deadline由小到大进行排序,然后找出deadline的最大值--day,从day到1依次找出deadline大于等于当前day的最大被减分数--reduce,用sum-reduce既得出最后的被减分数的最小值。
我的代码:
View Code
我的思路:先在输入过程中求出总被减分数sum,再对deadline由小到大进行排序,然后找出deadline的最大值--day,从day到1依次找出deadline大于等于当前day的最大被减分数--reduce,用sum-reduce既得出最后的被减分数的最小值。
我的代码:
#include <iostream> #include <algorithm> #include <cstring> using namespace std; struct Node { int time,fen; } node[1005]; int cmp(struct Node a,struct Node b) { if(a.fen!=b.fen) return a.fen > b.fen;//扣分越多的越靠前 return a.time < b.time;//扣分相同的时候,deadline越早的越靠前 } int visit[2010];//如果当天没用过,值为0;否则为1 int main() { int m; cin >> m; while(m--) { int n,i,j,ans = 0; memset(visit,0,sizeof(visit)); cin >> n; for(i = 0; i<n; i++) { cin >> node[i].time; } for(i = 0; i<n; i++) { cin >> node[i].fen; } sort(node,node+n,cmp); int sum = 0; for(i=0; i<n; i++) { j=node[i].time;// 从截止时间开始往前推,如果有一天没用过,这一天就做这一门课,这门课不扣分 while(j) { if(!visit[j]) { visit[j]=1; break; } j--; } if(j==0)//如果j=0,表明从time往前的每一天都被占用了,这门课完不成 ans+=node[i].fen; } cout << ans << endl; } return 0; }
View Code
相关文章推荐
- /var/spool/postfix/maildrop/ 中有大量的文件
- strong,weak,retain,assign,copy nomatic 等的区别
- 把OnDraw和OnPaint弄清楚(转贴)
- ORA-00845 Raised When Starting Instance (文档 ID465048.1)
- 带你一步步理解使用 ConstraintLayout
- block中self关键字的使用-防止self 被retain一次
- saiku后台用户权限数据源配置
- saiku优化配置项
- AI cc 2015 安装教程
- 【行为型】Chain of responsibility模式
- Google I/O:Android ConstraintLayout 扁平化布局入门 andstudio 2.2
- 关于Hibernate Could not obtain transaction-synchronized Session for current thread
- RAII&智能指针
- gmail邮箱怎么批量删除邮件
- *Cannot delete or update a parent row: a foreign key constraint fails ... /ConstraintViolationExcept
- fail-fast机制
- For Aisha(阿伊莎)
- faster-rcnn 之训练脚本解析:./tools/train_faster_rcnn_alt_opt.py
- Unix domain sockets
- Ubuntu 14.04编译RT288x_SDK/toolchain/squashfs3.2-r2时出错