<USACO09FEB>庙会捷运Fair Shuttleの思路
一个没有被我成功证明的
贪心
但是
ac了的
别人排序都是排终点.但我的排终点错了emm排起点才对qvq
有没有人友情看看怎么证(没有
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,c,k,now=,ans=,maxx=,cnt=;//now现在在车上的,maxx目前到达最远的站,cnt累计上到第几批了
int q[];//到i下车的牛数
struct node
{
int s,e,m;
}kk[];
bool cmp(node a,node b){return a.s<b.s;}
void emm(int i)
{
if(c>=now+kk[i].m)
{
q[kk[i].e]+=kk[i].m; now+=kk[i].m;
maxx=max(maxx,kk[i].e);
return;
}else
{
int nup=now+kk[i].m-c;//这一组全上去 会多出来的
for(int j=maxx;j>kk[i].e&&nup>;j--)//要给i波牛空位置
{
int end=q[j];
q[j]=max(,q[j]-nup);//赶走一些牛//因为 它在kk[i].e以前的位置已经有第i波的那几只可以代替了,所以,它要把从kk[i].e到最后的位置给空出来 让给之后的牛
maxx=j;
nup-=(end-q[j]);
}
//若还没有牛到kk[i].e的位置.第i波能上几只上几只emm就跳过了j循环
now=c;
q[kk[i].e]+=kk[i].m-nup;
maxx=max(maxx,kk[i].e);
}
}
int main()
{
int i,j;
scanf("%d%d%d",&k,&n,&c);
for(i=;i<=k;i++)scanf("%d%d%d",&kk[i].s,&kk[i].e,&kk[i].m);
sort(kk+,kk+k+,cmp);
cnt=;
for(i=;i<=n;i++)
{
if(q[i])//有牛可以下车啦
{
ans+=q[i];now-=q[i];
q[i]=;
}
while(kk[cnt].s==i)
{
emm(cnt);cnt++;
}
}
printf("%d\n",ans);
return ;
}
点击查看我丑陋の代码&注释
<USACO09FEB>庙会捷运Fair Shuttleの思路的更多相关文章
- bzoj 1577: [Usaco2009 Feb]庙会捷运Fair Shuttle——小根堆+大根堆+贪心
Description 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N.K(1<=K<=50000)群奶牛希望搭乘这辆公交车.第i群牛一共有Mi(1& ...
- 【贪心】bzoj1577: [Usaco2009 Feb]庙会捷运Fair Shuttle
一类经典的线段贪心 Description 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N.K(1<=K<=50000)群奶牛希望搭乘这辆公交车.第i ...
- [Usaco2009 Feb]庙会捷运Fair Shuttle
Description 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N.K(1<=K<=50000)群奶牛希望搭乘这辆公交车.第i群牛一共有Mi(1& ...
- BZOJ 1577: [Usaco2009 Feb]庙会捷运Fair Shuttle 线段树 + 贪心
escription 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N.K(1<=K<=50000)群奶牛希望搭乘这辆公交车.第i群牛一共有Mi(1&l ...
- 【BZOJ】1577: [Usaco2009 Feb]庙会捷运Fair Shuttle
[题意]公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地. [算法]贪心+堆 [题解]线段和点的贪心,一般有按左端点排序和按右端点排序两种方法 ...
- bzoj1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1577 [题解] 我们把每坨奶牛按s排个序. 对于每坨奶牛,如果车上有空位置就塞. 否则,看下 ...
- bzoj 1577: [Usaco2009 Feb]庙会捷运Fair Shuttle【贪心+线段树】
按结束时间排序,然后开个线段树,按照排序后的牛群贪心的选 贪心的依据是选哪头牛都是选,不如给后面的多省一点空间 #include<iostream> #include<cstdio& ...
- [bzoj1577][Usaco2009 Feb]庙会捷运Fair Shuttle_贪心_线段树
庙会捷运 Fair Shuttle bzoj-1577 Usaco-2009 Feb 题目大意:有一辆公交车从1走到n.有m群奶牛从$S_i$到$E_i$,第i群奶牛有$W_i$只.车有一个容量c.问 ...
- 洛谷 P1607 [USACO09FEB]庙会班车Fair Shuttle 解题报告
P1607 [USACO09FEB]庙会班车Fair Shuttle 题目描述 Although Farmer John has no problems walking around the fair ...
随机推荐
- i++ 和 ++i 的区别和实现
++i 和 i++ ++i 和 i++ 的区别 1)i++ 返回的是 i 的值,++i 返回的是 i+1 的值 2)i++ 不能用作左值,++i 可以用作左值 左值和右值的区别是什么? 根本区别是:能 ...
- Linux环境系列 之【配置虚拟机】
前言懒得讲, 不给人解决问题的程序员不是好的程序员,所有老规矩,直接上干货 This is 系列故事 如果你从这里单独看那是没有任何问题的,但是你是小白的话建议你跳去 ☞从头开始[环境概述] ☞本章节 ...
- nm命令介绍
一.参考文章 网址1:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html 参考2: man nm 参考3:<linux ...
- Django知识点_梳理
- 肯德基联手亚马逊Kindle试水咖啡主题店中店能成功吗?
互联网上始终有一个传说:kindle与泡面是绝配.因为用kindle压着泡面,泡出来的味道格外的好.当然,这只是一个调侃.毕竟很多人购买kindle的动力是为了摆脱其他电子设备的诱惑,想去好好去读书. ...
- opencv---颜色空间转化并实现物体跟踪
一.图像处理的基本操作 因为这是第一篇写opencv的笔记,故先讲讲在python下写opencv的基本操作.总共总结了三点如下: 开头一定要加编码声明:-*- coding: utf-8 -*- p ...
- http跳转http
server {listen 80;server_name 123.com;root /var/www/web/123;index index.html index.htm index.php;rew ...
- python脚本实现自动安装nginx
本文python脚本实现自动化安装是源码安装.实现任意版本安装,默认版本是1.13.11,也可以更改默认版本,手动配置安装目录. 环境:Ubuntu16.04,python3以上版本,Ubuntu自带 ...
- shell_切割日志
可以修改的:1.日志存放目录:logdir='/data/logs/'2.每个类型日志保留个数:savefiles=30 #!/bin/bashnum=$(date -d"+1 day ag ...
- script和scriptreplay_超骚气的实时监控你的服务器
今天看到一个超级叼的linux命令,可以完整记录屏幕上的命令与输出结果. 有人问这有什么叼的,不就是保存历史操作记录吗?我看看日志也能看出来. 不不不,我要说的“完整记录”包括第几秒执行什么命令,就像 ...