当前位置: 首页 > news >正文

[题解]P10277 [USACO24OPEN] Bessies Interview S

P10277 [USACO24OPEN] Bessie's Interview S

第一问可以用优先队列模拟,存储每个人的结束时间即可。

第二问,一开始考虑的是对于某一时刻队列中结束时间最小的人是可以任意互换顺序的,所以就用并查集把这些人合在一起。

最后与堆顶元素在同一连通块内的为 1,否则为 0

然而这样是错误的。

例如,一共有 \(3\) 个人 A,B,C。A,B 在某时刻可交换,且此时选 A 的情况下,B,C 在这之后的某时刻可交换。

考虑 B,C 均面试了一个耗时很长的奶牛,那么最终只有 A 是合法的。同理 B 也是合法的,但 C 不可能合法。

但是并查集做法会说 A,B,C 均合法。

可以参考这个 hack:

7 4
4 4 5 1 2 100 100

我们另辟蹊径。考虑到每个奶牛的面试时间是固定的,所以可以使用 BFS 求解。

初始将 Bessie 压入队列,每次取出一个元素,将结束时间为其起始时间的奶牛压入队列。以此类推,若有奶牛出现在 \(1\sim k\) 内则计入答案。

代码实现没建图,而是使用 set。效果相同。

时间复杂度 \(O(n\log n)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+5;
int n,k,a[N],lp[N],rp[N];
bitset<N> ans;
priority_queue<int,vector<int>,greater<int>> q;
set<int> s;
signed main(){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=k;i++){rp[i]=a[i];q.push(rp[i]);}for(int i=k+1;i<=n;i++){int t=q.top();q.pop();lp[i]=t,rp[i]=t+a[i];q.push(rp[i]);}cout<<q.top()<<"\n";s.insert(q.top());for(int i=n;i;i--){if(s.count(rp[i])){s.insert(lp[i]);if(i<=k) ans[i]=1;}}for(int i=1;i<=k;i++) cout<<ans[i];return 0;
}
http://www.jsqmd.com/news/33484/

相关文章:

  • 关于 Java快速查找详细
  • 什么是Ansible 清单 - 详解
  • 完整教程:如何用开源软件
  • 第一次团队项目作业
  • 隨機變量本質之最終闡述
  • 足式机器人适应多地形的方案
  • 使用vLLM实测3090和4090的大模型推理性能
  • CF1700F Puzzle
  • Redis高可用与高并发探险之旅:从单机到集群的完美进化【第三部分】
  • UE:论运行时动画录制的关键-正确获取骨骼数据与保存
  • 线性基相关
  • 关于fcitx5预览窗口部分emoji乱码问题
  • a-menu 当设置折叠状态如何穿透悬浮菜单样式
  • attention论文及Transformer工作原理概述
  • kamailio+rtpengine对sdp的处理
  • 软工团队项目第一次作业
  • 低代码权限管理安全合规指南:守住数据安全的 “最后一道防线”
  • 2025-11-06
  • 低代码权限管理常见场景解决方案:精准适配不同业务需求
  • 不适用模型的简易ai交互页面
  • 关于waybar状态栏颜文字乱码问题
  • 自己的火印
  • P10277 [USACO24OPEN] Bessies Interview S 题解
  • 基于AIGC的图表狐深度评测:自然语言生成专业级统计图表的高效的技术实现
  • AI 时代的数据库进化论 —— 从向量到混合检索
  • 深入解析:操作系统基础:了解进程、线程、协程,理解I/O模型(阻塞/非阻塞,同步/异步)。
  • vue 3.x 前端导出功能
  • 最高法-合同目的的认定
  • 2025年恒温恒湿机标杆厂家最新推荐:中焓环境,档案室恒湿机/精密恒温恒湿机/吊顶恒温恒湿机/档案室恒温恒湿机,定义环境控制精准新标准
  • 2025年恒温恒湿厂家及恒湿设备标杆之选:中焓环境,适配机房/档案室/展柜等场景