洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle
题目描述
Although Farmer John has no problems walking around the fair to collect prizes or see the shows, his cows are not in such good shape; a full day of walking around the fair leaves them exhausted. To help them enjoy the fair, FJ has arranged for a shuttle truck to take the cows from place to place in the fairgrounds.
FJ couldn't afford a really great shuttle, so the shuttle he rented traverses its route only once (!) and makes N (1 <= N <= 20,000) stops (conveniently numbered 1..N) along its path. A total of K (1 <= K <= 50,000) groups of cows conveniently numbered 1..K wish to use the shuttle, each of the M_i (1 <= M_i <= N) cows in group i wanting to ride from one stop S_i (1 <= S_i < E_i) to another stop E_i (S_i < E_i <= N) farther along the route.
The shuttle might not be able to pick up an entire group of cows (since it has limited capacity) but can pick up partial groups as appropriate.
Given the capacity C (1 <= C <= 100) of the shuttle truck and the descriptions of the groups of cows that want to visit various sites at the fair, determine the maximum number of cows that can ride the shuttle during the fair.
逛逛集市,兑兑奖品,看看节目对农夫约翰来说不算什么,可是他的奶牛们非常缺乏锻炼——如果要逛完一整天的集市,他们一定会筋疲力尽的。所以为了让奶牛们也能愉快地逛集市,约翰准备让奶牛们在集市上以车代步。但是,约翰木有钱,他租来的班车只能在集市上沿直线跑一次,而且只能停靠N(1 ≤N≤20000)个地点(所有地点都以1到N之间的一个数字来表示)。现在奶牛们分成K(1≤K≤50000)个小组,第i 组有Mi(1 ≤Mi≤N)头奶牛,他们希望从Si跑到Ti(1 ≤Si<Ti≤N)。
由于班车容量有限,可能载不下所有想乘车的奶牛们,此时也允许小里的一部分奶牛分开乘坐班车。约翰经过调查得知班车的容量是C(1≤C≤100),请你帮助约翰计划一个尽可能满足更多奶牛愿望的方案。
输入输出格式
输入格式:
【输入】
第一行:包括三个整数:K,N和C,彼此用空格隔开。
第二行到K+1行:在第i+1行,将会告诉你第i组奶牛的信息:Si,Ei和Mi,彼
此用空格隔开。
输出格式:
【输出】
第一行:可以坐班车的奶牛的最大头数。
输入输出样例
输入样例#1:
8 15 3
1 5 2
13 14 1
5 8 3
8 14 2
14 15 1
9 12 1
12 15 2
4 6 1
输出样例#1:
10
说明
【样例说明】
班车可以把2头奶牛从1送到5,3头奶牛从5送到8,2头奶牛从8送到14,1头
奶牛从9送到12,1头奶牛从13送到14,1头奶牛从14送到15。
zhw讲的做法是线段树
但是我想问,,
为什么暴力能过的题需要用线段树???????
思路:按照结束点排序,对于每一个线段,查询一下他在覆盖的区间里面的最小值,
然后根据这条线段的权值进行分类讨论就好
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
const int MAXN=100001;
inline void read(int &n)
{
char c=getchar();bool flag=0;n=0;
while(c<'0'||c>'9') c=='-'?flag=1,c=getchar():c=getchar();
while(c>='0'&&c<='9') n=n*10+c-48,c=getchar();flag==1?n=-n:n=n;
}
struct node
{
int bg,ed,num;
}cow[MAXN];
int comp(const node &a,const node &b)
{
if(a.ed!=b.ed) return a.ed<b.ed;
else return a.bg<b.bg;
}
int have[MAXN];// 在i这个位置,车上已经装了多少奶牛
int main()
{
int k,n,m;
read(k);read(n);read(m);
for(int i=1;i<=k;i++)
read(cow[i].bg),read(cow[i].ed),read(cow[i].num);
sort(cow+1,cow+k+1,comp);
int ans=0;
for(int i=1;i<=k;i++)
{
if(have[cow[i].bg]>=m) continue;
int now=0x7fffff;
for(int j=cow[i].bg;j<=cow[i].ed;j++)
{
now=min(now,m-have[j]);
if(now==0) break;
}
if(now!=0)
{
if(now>=cow[i].num)
{
for(int j=cow[i].bg;j<cow[i].ed;j++)
have[j]+=cow[i].num;
ans+=cow[i].num;
}
else
{
for(int j=cow[i].bg;j<cow[i].ed;j++)
have[j]+=now;
ans+=now;
}
}
}
printf("%d",ans);
return 0;
}
- 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)
- es6 对象的扩展
- 自定义WordPress 标签云小工具相关参数
- 检查.NET程序平台目标(Platform Target)工具CorFlags
- 哪些行业最适合抢驻小程序?
- WordPress 一键关闭/禁止页面评论功能
- 在一个.net sln中包含多个project,project引用同一个dll导致的错误
- Windows下安装MariaDB
- Quartz.net官方开发指南 第一课:使用Quartz.net
- Quartz.net官方开发指南 第二课:Jobs And Triggers
- 为你的WordPress 主题添加结构化数据/丰富文本摘要,高亮搜索结果(上)
- 复合事件处理(Complex Event Processing)介绍
- Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails
- 为你的WordPress 主题添加结构化数据/丰富文本摘要,高亮搜索结果(下)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微服务架构设计
- PHP 后端表单验证和请求处理
- Go 数据存储篇(四):通过 Gob 包序列化二进制数据
- 引入 SB Admin 2 作为后台管理系统主题
- Laravel Jetstream是什么以及如何入门?
- Bash基础训练指南
- 基于NodeJS从零构建线上自动化打包工作流
- 如何实现H5可视化编辑器的实时预览和真机扫码预览功能
- LeetCode67|二分查找
- LeetCode66|二叉树的最小深度
- LeetCode65|回文链表
- LeetCode64|茴香豆???
- WEB安全学习二、注入工具 sqlmap的使用
- LeetCode63|香山碧云寺云碧山香
- LeetCode62|数组形式的整数加法