博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1337 A Lazy Worker
阅读量:5973 次
发布时间:2019-06-19

本文共 1293 字,大约阅读时间需要 4 分钟。

 

Summary:

1. Fill dp array explicitly by using dp[i] = dp[i+1]

2. At time i, do the first job explicitly

 

Code:

/* * source.cpp * *  Created on: Apr 5, 2014 *      Author: sangs */#include 
#include
#include
#include
#include
using namespace std;class Job {public: int st, ed, duration; Job(int _st, int _ed, int _du):st(_st), ed(_ed), duration(_du) {} Job() { st = ed = duration = 0; }};vector
jobs[2500];int dp[2500];int cal(int n) { memset(dp, 0, sizeof(dp)); for(int i = n; i >= 0; i --) { if(jobs[i].size() == 0) { dp[i] = dp[i+1]; continue; } int du = jobs[i][0].duration; dp[i] = du + dp[i+du]; for(size_t j = 1; j < jobs[i].size(); j ++) { du = jobs[i][j].duration; dp[i] = min(dp[i], du+dp[i+du]); } } for(int i = 0; i <= n; i ++) jobs[i].clear(); return dp[0];}int main() { freopen("input.txt", "r", stdin); int cases, m; scanf("%d", &cases); while(cases --) { scanf("%d", &m); int n = 0; for(int i = 0; i < m; i ++) { int st, ed, du; scanf("%d%d%d", &du, &st, &ed); n = max(n, ed); for(int j = st; j <= ed-du; j ++) { jobs[j].push_back(Job(st, ed, du)); } } int res = cal(n); printf("%d\n", res); } return 0;}

  

 

转载于:https://www.cnblogs.com/zhouzhuo/p/3647657.html

你可能感兴趣的文章
web网站服务(二)
查看>>
【第一期】网站打开错误问题解决方法集合
查看>>
j2ee开发防范URL攻击是个重要话题
查看>>
MongoDB集群搭建及Sharding的实现思路
查看>>
传统企业在移动互联网时代的转变-薛雯漪
查看>>
我的友情链接
查看>>
inotify+rsync实时同步 彻底告别同步慢
查看>>
NetFlow
查看>>
RSync实现文件备份同步
查看>>
如何判断一个服务是否正在运行
查看>>
C语言 冒泡排序法
查看>>
MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
查看>>
《BT5入门到精通》全动画光盘教程第一时间免费赠送,附赠BT5中文指南V0.9教程...
查看>>
关于oracle误删数据恢复
查看>>
精品软件 推荐 相当优秀的轻量级文本编辑器 Notepad2
查看>>
Lync 2013快速入门手册之三:组织Lync会议
查看>>
SQL SERVER 2008 表与约束的创建维护
查看>>
我的友情链接
查看>>
Exadata VM CELL 上添加新磁盘--扩充空间
查看>>
zabbix企业应用之监控mysql 5.6版本
查看>>