2520 牛的舞蹈表演 二分答案 优先队列
解决思路
- 二分查找:使用二分查找来确定舞台的最小大小 K。
- 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。
- 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。
- 更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最小的 K。
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e5 + 10; int n, a[N], t; // 检查在舞台大小为 mid 时,演出是否能在 T_max 时间内完成 bool check(int mid) { priority_queue<int, vector<int>, greater<int>> q; for (int i = 1; i <= mid; i++) q.push(a[i]); for (int i = mid + 1; i <= n; i++) { int minn = q.top(); q.pop(); q.push(minn + a[i]); // 新加入队列的 a[i] 必须是 top() 结束后加入的,而 top() 跳了 minn 时长 } while (q.size() > 1) q.pop(); // 全部弹出,队列的最后一人就是整个队伍的跳舞时长 return q.top() <= t; } int main() { // 读取奶牛数量和演出可进行的最长时间 cin >> n >> t; for (int i = 1; i <= n; i++) cin >> a[i]; int L = 1, R = n, ans = n; while (L <= R) { int mid = (L + R) >> 1; if (check(mid)) { ans = mid; R = mid - 1; } else { L = mid + 1; } } cout << ans; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-09-30 TZOJ 3692: 紧急援救 最短路/dijstra