USACO09FEB Fair Shuttle

news/2024/7/2 23:08:46

题目传送门

据说\(NOIp\)前发题解可以\(\mathfrak{RP}\)++


因为要尽可能满足更多奶牛,所以按照这种区间贪心题的套路,先按右端点排序,然后依次遍历,能坐车的就让它们坐车,这样一定是最优的。
在贪心的时候,我们要知道在车在当前的时间段中最少有多少空位,可以用线段树维护(也可以不用线段树,但个人感觉用线段树比较好理解)。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ls p<<1
#define rs p<<1|1
#define mid ((l+r)>>1)
using namespace std;
int read(){int k=0; char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9')k=k*10+c-48,c=getchar();return k;
}
struct zzz{int st,en,num;
}cow[50010];
bool cmp(zzz x,zzz y){ //按右端点排序return x.en < y.en;
}
int tree[20010<<2],tag[20010<<2];  //以下为线段树维护区间最大值
inline void down(int l,int r,int p){tree[ls]+=tag[p]; tree[rs]+=tag[p];tag[ls]+=tag[p]; tag[rs]+=tag[p];tag[p]=0;
}
inline void up(int p){tree[p]=max(tree[ls],tree[rs]);
}
void update(int l,int r,int p,int nl,int nr,int k){if(l>=nl&&r<=nr){tree[p]+=k; tag[p]+=k; return ;}down(l,r,p);if(nl<=mid) update(l,mid,ls,nl,nr,k);if(nr>mid) update(mid+1,r,rs,nl,nr,k);up(p);
}
int query(int l,int r,int p,int nl,int nr){int ans=0;if(l>=nl&&r<=nr) return tree[p];down(l,r,p);if(nl<=mid) ans=max(ans,query(l,mid,ls,nl,nr));if(nr>mid) ans=max(ans,query(mid+1,r,rs,nl,nr));return ans;
}
int main(){int k=read(),n=read(),c=read();for(int i=1;i<=k;i++)cow[i].st=read(),cow[i].en=read()-1,cow[i].num=read();sort(cow+1,cow+k+1,cmp);int maxn=0;for(int i=1;i<=k;i++){  //遍历区间int x=query(1,n,1,cow[i].st,cow[i].en);if(x<c){int f=min(c-x,cow[i].num);  //当前能有几头奶牛上车maxn+=f;update(1,n,1,cow[i].st,cow[i].en,f);}}cout<<maxn;return 0;
}

转载于:https://www.cnblogs.com/wxl-Ezio/p/9929271.html


http://lihuaxi.xjx100.cn/news/253292.html

相关文章

Python 中 6 个经典的新手错误,你碰到过几个?

作者 | 快快来源 | 快学PythonSyntaxError的来源当您运行 Python 代码时&#xff0c;解释器将首先解析它以将其转换为 Python 字节码&#xff0c;然后执行。解释器将在程序执行的第一阶段&#xff08;也称为解析阶段&#xff09;中发现 Python 中的任何无效语法。如果解释器无法…

PL/SQL三种集合类型的比较

PL/SQL三种集合类型的比较<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />集合是指在一个程序变量中包含多个值。PL/SQL提供的集合类型如下&#xff1a;Associative Array:TYPE t IS TABLE OF something INDEX BY PLS_INTEGER;N…

替代ELK:ClickHouse+Kafka+FlieBeat

点击关注公众号&#xff0c;Java干货及时送达&#x1f447;文章来源&#xff1a;https://c1n.cn/yoNYE目录背景Elasticsearch vs ClickHouse成本分析环境部署总结背景saas 服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力&#xff0c;帮助业务提升行…

提升jmeter自身性能

JMeter负载测试时使用GUI界面和较多的收集测试结果的监听器容易造成jmeter的性能瓶颈&#xff0c;远程测试时的控制台尤为明显。提升JMeter负载测试时性能的方法如下&#xff1a; 官方的解决办法&#xff1a;http://jakarta.apache.org/jmeter/usermanual/best-practices.html#…

为什么以太网帧的长度最短64字节,最长1518字节?

1.碰撞槽时间 假设公共总线媒体长度为S&#xff0c;帧在媒体上的传播速度为0.7C&#xff08;光速&#xff09;&#xff0c;网络的传输率为R&#xff08;bps&#xff09;&#xff0c;帧长为L&#xff08;bps&#xff09;&#xff0c;tPHY为某站的物理层时延&#xff1b; 则有&a…

Oracle Golden Gate体系架构详解(原创) - CzmMiao的博客生活 - ITeye技术网站

Oracle Golden Gate体系架构详解(原创) - CzmMiao的博客生活 - ITeye技术网站

使用alterMIME实现添加message footer功能

1. 安装alterMIME tar zxvf altermime-0.3.8.tar.gz cd altermin3-0.3.8 make make install altermine将被编译安装到/usr/local/bin/2. 使用必备条件&#xff1a;一个运行且配置正常的邮件服务器3. 配置AlterMIME3.1 为altermine创建一个系统帐号&#xff0c;如下&#x…