CF812C Sagheer and Nubian Market
2021/10/11 23:16:48
本文主要是介绍CF812C Sagheer and Nubian Market,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Description
洛谷传送门
Solution
注意到题目要求我们计算出最多能买多少个纪念品,所以容易想到二分。
我们二分最多能买多少个纪念品,把每个纪念品的实际花费计算出来,从小到大排个序,取出前 \(mid\) 个,判断花费是否合法即可。
Code
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N = 1e5 + 10; int n, s, cnt, ans, res; int a[N], b[N]; inline bool check(int mid){ for(int i = 1; i <= n; i++) b[i] = a[i] + i * mid;//计算每个物品的实际花费。 sort(b + 1, b + 1 + n); res = 0; for(int i = 1; i <= mid && res <= s; i++)//取前 k 个物品,总花费小于等于 s res += b[i]; return res <= s; } int main(){ scanf("%d%d", &n, &s); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); int l = 0, r = n; while(l <= r){ int mid = (l + r) >> 1; if(check(mid)) cnt = mid, ans = res, l = mid + 1;//二分边界向来不好调,合法时直接更新答案即可。 else r = mid - 1; } printf("%d %d\n", cnt, ans); return 0; }
End
这篇关于CF812C Sagheer and Nubian Market的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework