2022 ccpc 广东省赛 F 望舒客栈的委托
当成大模拟写了,就是开了四个set辅助
今天才知道set的find函数是logN的,因为里面封装了红黑树(喵喵喵?
re了一发,又t了一发
理论上模拟的时间复杂度不会t,所以猜测是因为set没写好,没找到东西,卡了
re了应该是数组没开够
修修改改终于补了队友赛时过的题,码量还是不够,继续努力啊
#include<bits/stdc++.h> using namespace std; struct lys{ int x,a,d,op; }f[3*int(1e6)+7]; struct bjx{ int tim,id,op; }t[3*int(1e6)+7]; set<int>s[6]; int book[2*int(1e6)+7]; bool cmp(bjx a,bjx b){ return a.tim<b.tim; } int main(){ //freopen("lys.in","r",stdin); std::ios::sync_with_stdio(false); int n; int m=0,cnt=0; cin>>n; for(int i=1;i<=n;i++){ cin>>f[i].x>>f[i].a>>f[i].d>>f[i].op; t[++cnt].tim=f[i].a;t[cnt].id=i;t[cnt].op=0; t[++cnt].tim=f[i].d;t[cnt].id=i;t[cnt].op=1; } sort(t+1,t+cnt+1,cmp); for(int i=1;i<=cnt;i++){ if(t[i].op==0)// arive {int id=t[i].id; if(f[id].op==0){// she kong if(!s[0].empty()) { int h=*s[0].begin(); s[f[id].x].insert(h); book[id]=h; s[0].erase(h); } else { m++; book[id]=m; s[f[id].x].insert(m); } } else { int pos=0;int tmp[5]; for(int ii=0;ii<=3;ii++) { if(!s[ii].empty()) tmp[ii]=*s[ii].begin(); else tmp[ii]=0x3f3f3f3f; } for(int ii=0;ii<=3;ii++) if(ii+f[id].x<=4&&tmp[ii]<tmp[pos]) pos=ii; if(tmp[pos]==0x3f3f3f3f) { m++; s[f[id].x].insert(m); book[id]=m; } else { int h=tmp[pos]; book[id]=h; s[pos+f[id].x].insert(h); s[pos].erase(h); } } } else { int id=book[t[i].id]; for(int ii=1;ii<=4;ii++){ if(s[ii].find(id)!=s[ii].end()){ s[ii].erase(id); s[ii-f[t[i].id].x].insert(id); break; } } } } cout<<m; }
分类:
STL君
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)