[WOJ4354] 蜀石经
题目链接:###
题目分析:###
大模拟,貌似\(O(n^2)\)也可以卡常过,复杂度正确的做法是用优先队列维护。
代码:###
#include<bits/stdc++.h>
#define N (100000+5)
using namespace std;
struct node{
int a;int t;int num;
friend bool operator < (node a,node b){
return a.num>b.num;
}
}st[N];
priority_queue<node>q;
inline int read(){
int cnt=0,f=1;char c;
c=getchar();
while(!isdigit(c)){
if(c=='-') f=-f;
c=getchar();
}
while(isdigit(c)){
cnt=cnt*10+c-'0';
c=getchar();
}
return cnt*f;
}
int n,last,wait,ans;
bool cmp2(node a,node b){
return a.a<b.a;
}
int main(){
n=read();
for(register int i=1;i<=n;i++) {
st[i].a=read();st[i].t=read();
st[i].t+=st[i].a;st[i].num=i;
}
sort(st+1,st+n+1,cmp2);
last=st[1].t;
for(register int i=2;i<=n;i++) {
if(st[i].a>=last) {
if(q.empty()) last=st[i].t;
else{
wait=last-q.top().a;
ans=max(ans,wait);
last=wait+q.top().t;
q.pop();
if(last<st[i].a) --i;
else q.push(st[i]);
}
}
else q.push(st[i]);
}
while(!q.empty()){
wait=last-q.top().a;
ans=max(ans,wait);
last=q.top().t;
q.pop();
}
printf("%d\n",ans);
return 0;
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络