<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 ...
随机推荐
- PAT Advanced 1067 Sort with Swap(0,*) (25) [贪⼼算法]
题目 Given any permutation of the numbers {0, 1, 2,-, N-1}, it is easy to sort them in increasing orde ...
- AtCoder - 4371 Align(分类讨论)
Align AtCoder - 4371 Problem Statement You are given N integers; the i-th of them is Ai. Find the ma ...
- JavaSE--jdom解析之bom
参考:http://www.cnblogs.com/findumars/p/3620078.html org.jdom2.input.JDOMParseException: Error on line ...
- 论文或github中一些通用思想
(1) 云从 上海交大 ECCV2018 http://openaccess.thecvf.com/content_ECCV_2018/papers/Yao_Feng_Joint_3D_Face_EC ...
- zxing生成二维码转base64 img直接显示 Image对象转Base64码(java)
public static String encodeToBase64(String content){ MultiFormatWriter multiFormatWriter = new Multi ...
- 剑指offer【11】- 矩形覆盖
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 在分析前不知道是什么序列,所以先看了n=1,n=2,n=3,n= ...
- SQL Link Oracle
转自:http://www.2cto.com/database/201107/96105.html 做项目过程中常用到数据库同步,现把前一段时间做的一个项目部分,同步过程贴出来,供分享与自己参考! 本 ...
- 17.3.15---C语言详解FILE文件操作
FILE 是 C语言文件结构定义, 打开文件和文件操作要用到这类结构.可以看成变量类型,用于变量声明.这个是一种数据结构类型,用来表示一个文件的相关信息,如果定义了一个文件指针,就用这个指针来指向某个 ...
- FastReport 使用入门
FastReport 是微软开发的一款快速报表工具,使用起来非常方便简单 最关键的是快捷. 下面介绍一下 Fastreport在项目中的使用. 下图为其中一个效果图 首先 打开FastReport ...
- Hibernate工程的手动创建
1.打开MyEclipse软件,新建Java项目,如HibernateReview: 2.导入Hibernate所需的jar包: 右键build path选择configurate build pat ...