YL 模拟赛总结 15
Problem
T1
感觉是最难的。
考虑贪心。
首先对牛的按左端点进行排序,然后对于每只鸡去考虑匹配哪头牛。
具体地,开一个小根堆,然后对于每只鸡 \(t_i\),将 \(a_i \le t_i\) 的牛放入堆中,此时堆中存放的是候选的牛。
然后对于堆中的牛,将 \(b_i<t_i\) 的牛弹出。
此时堆中的牛均是合法的,累加堆的大小即可。
#include<bits/stdc++.h> using namespace std; int c,n,ans; int t[20031]; struct node{ int x,y; friend bool operator < (node a,node b){ return a.y>b.y; } }a[20031]; priority_queue<node> pq; bool cmp(node a,node b){ return a.x<b.x; } int main(){ cin>>c>>n; for(int i=1;i<=c;i++) cin>>t[i]; for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y; sort(t+1,t+c+1),sort(a+1,a+n+1,cmp); for(int i=1,now=1;i<=c;i++){ while(now<=n&&a[now].x<=t[i]) pq.push(a[now++]); while(!pq.empty()&&pq.top().y<t[i]) pq.pop(); if(!pq.empty()) ans++,pq.pop(); } cout<<ans; return 0; }
T2
略。
T3
略。
T4
略。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理