51nod 1112 KGold(优先队列)
发布日期:2021-11-02 09:48:34
浏览次数:2
分类:技术文章
本文共 2317 字,大约阅读时间需要 7 分钟。
1112 KGold
题目
给出N个人在0时刻的财富值M[i](所有人在0时刻的财富互不相等),以及财富增长速度S[i],随着时间的推移,某些人的财富值会超越另外一些人。如果时间足够长,对于财富增长最快的人来说,他的财富将超越所有其他对手。
求发生的前10000次超越,分别是谁超过了谁?如果总的超越次数不足10000,则输出所有超越,如果1次超越都不会发生,则输出No Solution。 输出按照超越发生的时间排序,同一时刻发生的超越,按照超越者的编号排序,如果编号也相同,则按照被超越者的编号排序。所有排序均为递增序。输入
第1行:N,表示人的数量。(1 <= N <= 10000)
第2 - N + 1行:每行2个数,分别是初始的财富值M[i],和财富增长速度S[i]。(0 <= M[i] <= 10^5, 1 <= S[i] <= 100)输出
输出前10000次超越,超越者和被超越者的编号。如果总的超越次数不足10000,则输出所有。如果1次超越都不会发生,则输出No Solution。
输出按照超越发生的时间排序,同一时刻发生的超越,按照超越者的编号排序,如果超越者编号也相同,则按照被超越者的编号排序。所有排序均为递增序。输入样例
4
1 100 2 100 3 1 4 50输出样例
2 3
1 3 2 4 1 4代码
#includeusing namespace std;#define esp 1e-9typedef long long ll;int n;struct point { double w, s; int id; bool operator<(const point &a) const { return a.w > w; }} e[10005];struct Cost { double cost; int id; bool operator<(const Cost &a) const { return a.cost > cost; }} f[10006];struct node { double time; int idx, idy; bool operator<(const node &a) const { return fabs(a.time - time) < esp ? (a.idx == idx ? a.idy < idy : a.idx < idx) : a.time < time; }} p;priority_queue q;int solve(double mid) { for (int i = 1; i <= n; i++) { f[i].id = i; f[i].cost = mid * e[i].s + e[i].w; } sort(f + 1, f + n + 1); int ans = 0; for (int i = 1; i <= n; i++) if (i < f[i].id) ans += f[i].id - i; return ans > 10000;}int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lf%lf", &e[i].w, &e[i].s); e[i].id = i; } sort(e + 1, e + n + 1); double l = 1.0, r = 100000005.0; while (r - l > 0.00001) { double mid = (l + r) / 2; if (solve(mid)) r = mid; else l = mid; } for (int i = 1; i <= n; i++) for (int j = 1; j < i; j++) { if (e[j].s > e[i].s) { p.time = (e[i].w - e[j].w) * 1.0 / (e[j].s - e[i].s); if (p.time > esp && p.time < r) { p.idx = e[j].id; p.idy = e[i].id; q.push(p); } } } for (int i = 0; i < 10000; i++) { if (!q.empty()) { printf("%d %d\n", q.top().idx, q.top().idy); q.pop(); } else break; } return 0;}
转载地址:https://blog.csdn.net/weixin_43820352/article/details/108186227 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年03月31日 15时18分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
今日金融词汇---新股新债前面的N,是什么?
2019-04-28
每日一道python面试题 - Python的实例,类和静态方法揭秘
2019-04-28
原创专辑来了
2019-04-28
好好做好你喜欢做的事情,并且把它做好
2019-04-28
反馈不足
2019-04-28
人生永远没有太晚的开始
2019-04-28
python 周日福利来了
2019-04-28
状态模式
2019-04-28
跳表SkipList
2019-04-28
跳跃表(Skip list)原理与java实现
2019-04-28
Java 常见的 30 个误区与细节
2019-04-28
干货|基于 Spring Cloud 的微服务落地
2019-04-28
WEB攻击手段及防御第2篇-SQL注入
2019-04-28
WEB攻击手段及防御第3篇-CSRF
2019-04-28
WEB攻击手段及防御-扩展篇
2019-04-28
spring bean初始化及销毁你必须要掌握的回调方法。
2019-04-28
mysql语句性能开销检测profiling详解
2019-04-28
hashCode到底有什么用?
2019-04-28
设计模式之动态代理模式实战
2019-04-28
设计模式之静态代理模式实战
2019-04-28