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

[USACO09OPEN] Work Scheduling G

[USACO09OPEN] Work Scheduling G

依旧糖的要死

题目大意

总共 \(N\) 项工作,每个工作两个参数 \(D_i\)(截至日期) 和 \(P_i\)(所获利润),时间 \(0\) 开始,总共有 \(10^9\) 个时间单位。他目前可以从 \(N\) 项工作中选择要做的工作,任何一个时间单位内只能完成一项工作,每项工作只需要一个时间单位。在截止时间前才能完成第 \(i\) 项工作,问获得的最大总利润是多少?

分析

首先一个相当显然的贪心:直接对着利润排序,优先选择利润较高的工作,赶在截至日期去前做(一个小小的转化,既然时间从 \(0\) 开始,我们不妨将时间整体向后位移一位),因为一件工作显然是越晚做越好,因此从截至日期向前找第一个空闲的日子来做当前工作即可。

然后我们来考虑一下,“向前找第一个空闲的日子”这个操作显然是优化的关键,我们考虑从 \(O(n)\) 优化到 \(O(\log n)\)

这就是这是一个比较典的线段树上二分问题了,通过记录最小值对线段树递归剪枝,向右封闭区间。

最后可以得到一个总体 \(O(n\log n)\) 的算法(好像贪心部分是可以用并查集做到线性的,但是我不会捏)。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,rt,cnt(0),ans(0);
int num[N];
struct pii{int val,dea;
}a[N];
namespace TREE{struct Node{#define lson t[pos].ls#define rson t[pos].rsint ls,rs,minn;}t[N<<2];void push_up(int pos){t[pos].minn=min(t[lson].minn,t[rson].minn);}void insert(int &pos,int l,int r,int x){if(!pos) pos=++cnt;t[pos].minn=0;if(l==r) return t[pos].minn=1,void();int mid((l+r)>>1);if(x<=mid) insert(lson,l,mid,x);else insert(rson,mid+1,r,x);push_up(pos);}int query(int pos,int l,int r,int ql,int qr){if(t[pos].minn) return 0;if(l==r) return l;int mid((l+r)>>1),x(0);if(mid<qr) x=query(rson,mid+1,r,ql,qr);if(ql<=mid&&(!x)) x=query(lson,l,mid,ql,qr);return x;}
}
signed main(){// freopen("2.in","r",stdin);// freopen("2.in","r",std);ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;++i) cin>>a[i].dea>>a[i].val;sort(a+1,a+n+1,[](const pii A,const pii B){return A.val>B.val;});for(int i=1;i<=n;++i){int y=TREE::query(rt,1,n,1,a[i].dea);if(!y) continue;ans+=a[i].val;TREE::insert(rt,1,n,y);}cout<<ans<<endl;
}
/* 
3 
2 10 
1 5 
1 7
*/

后记:记得不管什么情况下都要把 warning 削干净了,本地测评环境往往和测评机不一样,小心 \(Linux\) 出锅。

http://www.jsqmd.com/news/274456/

相关文章:

  • NMR波谱仪品牌Top5与生产商全解析:从供应商到价格指南 - 品牌推荐大师1
  • 先写计划再动手:OpenCSG公益课的AI编程方法
  • 2026最新三亚旅游公司TOP5评测!资深团队+定制服务权威榜单发布,文旅赋能重构品质旅行体验 - 品牌推荐2026
  • 游戏手柄测试全攻略:5分钟掌握手柄故障排查技巧
  • 智能补帧技术:让静态动图重获新生
  • 最快速查询sql的方法. asyncmy
  • 2026年二手/全新稳定土/混凝土搅拌站推荐榜:山东昊晟机械专业回收与供应全解析
  • 2026年生活垃圾智能分选设备,垃圾分类设备,可回收物智能分选设备厂家推荐及选购参考榜 - 深度智识库
  • 突破!LLM自我批评让规划能力暴涨89.3%!DeepMind新方法,不依赖外部验证,小白程序员也能轻松掌握!
  • 浙大西湖Ant团队:让大语言模型用“听“来优化“看“的压缩技术
  • iOS免越狱个性化定制:Cowabunga Lite隐藏技巧与高阶玩法全解析
  • Mastercam许可管理入门指南
  • 救命!制造业AI Agent这么强?架构拆解+实战案例+ROI计算,一篇搞定!
  • 5分钟掌握AMD Ryzen处理器精准调优:SMU调试工具完全指南
  • AI Agent架构保姆级教程:从“懵圈“到“精通“,四层闭环+四步路径,让你少走90%弯路
  • Linux性能排查实战:从“系统慢”到精准定位
  • 【硬核干货】大模型开发核心:预训练技术深度剖析,附完整代码实现!
  • 终极游戏手柄测试指南:零配置实时检测解决方案
  • 2026冷风机厂家权威推荐榜:奥德冷风机、工业冷风机、冷风机供应商及品牌实力解析
  • 2026年学术论文降AI实战测评:谁是过关斩将的利器? - 品牌观察员小捷
  • AI训练数据集供应商推荐:专业图片、视频、AI数据训练服务商精选 - 品牌2025
  • 科研新范式:Claude 4.5 Sonnet 深度集成 Benchling,打通实验与写作全链路 - 147API
  • 免费的问卷调查平台盘点:微信QQ微博多渠道分发集成(2025最新榜单) - 品牌排行榜
  • Dolphinscheduler分布式调度系统实战:从架构解析到生产级部署深度指南
  • 元数据管理革命:ExifToolGUI如何让GPS定位与批量处理变得简单高效
  • 2026年仿古铝瓦权威推荐:西安睿驰古建以金属智慧守护古建之美 - 深度智识库
  • Windows 下 tree 命令学习笔记
  • DLSS Swapper终极指南:一键升级游戏画质的免费神器
  • Prompt(提示词工程)
  • 2026年仿古铝瓦厂家TOP5权威推荐:西安睿驰古建引领行业革新! - 深度智识库