【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚
题目描述
Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer John, the most obliging of farmers, has no choice but hire some of the cows to clean the barn. Farmer John has N (1 <= N <= 10,000) cows who are willing to do some cleaning. Because dust falls continuously, the cows require that the farm be continuously cleaned during the workday, which runs from second number M to second number E during the day (0 <= M <= E <= 86,399). Note that the total number of seconds during which cleaning is to take place is E-M+1. During any given second M..E, at least one cow must be cleaning. Each cow has submitted a job application indicating her willingness to work during a certain interval T1..T2 (where M <= T1 <= T2 <= E) for a certain salary of S (where 0 <= S <= 500,000). Note that a cow who indicated the interval 10..20 would work for 11 seconds, not 10. Farmer John must either accept or reject each individual application; he may NOT ask a cow to work only a fraction of the time it indicated and receive a corresponding fraction of the salary. Find a schedule in which every second of the workday is covered by at least one cow and which minimizes the total salary that goes to the cows.
输入
* Line 1: Three space-separated integers: N, M, and E. * Lines 2..N+1: Line i+1 describes cow i's schedule with three space-separated integers: T1, T2, and S.
输出
* Line 1: a single integer that is either the minimum total salary to get the barn cleaned or else -1 if it is impossible to clean the barn.
样例输入
3 0 4
0 2 3
3 4 2
0 0 1
样例输出
5
提示
约翰有3头牛,牛棚在第0秒到第4秒之间需要打扫.第1头牛想要在第0,1,2秒内工作,为此她要求的报酬是3美元.其余的依此类推. 约翰雇佣前两头牛清扫牛棚,可以只花5美元就完成一整天的清扫.
题解
线段树或动态规划
一道看似很水的题。
由于USACO数据较水,而且bzoj有O2优化,于是一开始试着用dp来求解。
然后就AC了。。。AC了。。。AC了。。。
而且速度飞快啊。
看了正解才知道是线段树的题,仔细想想也不难。
这里直接搬运黄学长的blog:
http://hzwer.com/3869.html
代码是dp的,不需任何优化即可通过。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct data
{
int t1 , t2;
long long s;
}a[10001];
long long f[10001];
bool cmp(data a , data b)
{
return a.t1 < b.t1;
}
int main()
{
int n , m , e , i , j;
long long ans = 0x3f3f3f3f3f3f3f3fll;
scanf("%d%d%d" , &n , &m , &e);
for(i = 0 ; i < n ; i ++ )
{
scanf("%d%d%lld" , &a[i].t1 , &a[i].t2 , &a[i].s);
}
sort(a , a + n , cmp);
memset(f , 0x3f , sizeof(f));
for(i = 0 ; i < n ; i ++ )
if(a[i].t1 <= m)
f[i] = a[i].s;
for(i = 1 ; i < n ; i ++ )
for(j = 0 ; j < i ; j ++ )
if(a[j].t2 + 1 >= a[i].t1)
f[i] = min(f[i] , f[j] + a[i].s);
for(i = 0 ; i < n ; i ++ )
if(a[i].t2 >= e)
ans = min(ans , f[i]);
if(ans == 0x3f3f3f3f3f3f3f3fll)
printf("-1\n");
else
printf("%lld\n" , ans);
return 0;
}
【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚的更多相关文章
- BZOJ1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
		
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 414 Solved: ...
 - [BZOJ1672][Usaco2005 Dec]Cleaning Shifts 清理牛棚 线段树优化DP
		
链接 题意:给你一些区间,每个区间都有一个花费,求覆盖区间 \([S,T]\) 的最小花费 题解 先将区间排序 设 \(f[i]\) 表示决策到第 \(i\) 个区间,覆盖满 \(S\dots R[i ...
 - BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
		
题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Description Farm ...
 - BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树
		
BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树 题意: 约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西.约翰发现,如果要使这群 ...
 - P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚
		
P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚 你有一段区间需要被覆盖(长度 <= 86,399) 现有 \(n \leq 10000\) 段小线段, 每段可 ...
 - [Usaco2005 Dec]Cleaning Shifts 清理牛棚 (DP优化/线段树)
		
[Usaco2005 Dec] Cleaning Shifts 清理牛棚 题目描述 Farmer John's cows, pampered since birth, have reached new ...
 - 【BZOJ1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚 动态规划
		
[BZOJ1672][Usaco2005 Dec]Cleaning Shifts Description Farmer John's cows, pampered since birth, have ...
 - 洛谷P4644 [USACO2005 Dec]Cleaning Shifts 清理牛棚 [DP,数据结构优化]
		
题目传送门 清理牛棚 题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness ...
 - 【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚  dp/线段树
		
题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now ...
 
随机推荐
- Leetcode 57: Insert Interval 让代码更好读, 更容易测试.
			
阅读了几个博客, 决定写一个简易版本; 忙着做更多题, 没有时间多考虑优化代码, 所以, 就写一个试试运气. http://blog.csdn.net/kenden23/article/details ...
 - Struts2 讲解笔记
			
1.第一个Struts2入门案例 1.找jar包 Struts2-core xwork-core ognl javasist freemarker commons-lang commons-io co ...
 - MFC消息映射机制以及画线功能实现
			
---此仅供用于学习交流,切勿用于商业用途,转载请注明http://www.cnblogs.com/mxbs/p/6213404.html. 利用VS2010创建一个单文档标准MFC工程,工程名为Dr ...
 - PHP代码
			
1 <html> <head> <meta http-equiv="content-type" content="text/h ...
 - hibernate关联映射
			
首先,建立user表,news表 建立User,News类 package com.example.hibernate; import java.util.Set; public class User ...
 - [LeetCode] Paint Fence 粉刷篱笆
			
There is a fence with n posts, each post can be painted with one of the k colors. You have to paint ...
 - WinHttp
			
using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...
 - How to remove null value in json string
			
Hi I'm using the below class Public List<string> name; Public List<string> midname; Once ...
 - php 2038年问题
			
在mysql中存放日期时可以存放整数 (int), 而int可以存放的数据最大为4294967295(无符号), 而php最大为2147483647, 要显示一个大于2038年日期,该如何处理 ? ...
 - java中IO流小解
			
下面这张图列出了java中一些处理流: java中根据操作对象的不同可以分为:字节流和字符流. 首先我们先表示一下什么叫节点流和处理流: 节点流:可以从或向一个特定的地方(节点)读写数据.如FileR ...