博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SGU 548 Dragons and Princesses
阅读量:6151 次
发布时间:2019-06-21

本文共 1201 字,大约阅读时间需要 4 分钟。

意甲冠军:

n个月格儿  所有的格龙或公主的儿子  从勇士1走n  不杀  杀死有钱拿  路过公主  假设之前杀龙的数量满足公主要求就会停止行走  问  勇士想多拿钱  可是必需要满足n格子的公主  最多拿多少钱

思路:

公主仅仅限制杀龙的数量  因此不想停下来结婚就控制杀龙的数量就可以  假设要放弃一些龙  那么一定会贪心放弃钱少的龙  最后推断一下能不能和n格子的公主结婚就可以

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define N 200010int n;struct dragon { int x, id; bool operator<(const dragon ff) const { return x > ff.x; }} now;priority_queue
q;int ans[N], tot, sum;int main() { int i, k, s; char who[100]; while (!q.empty()) q.pop(); scanf("%d", &n); for (i = 2; i <= n; i++) { scanf("%s%d", who, &k); if (i == n) break; if (who[0] == 'd') { now.x = k; now.id = i; q.push(now); } else { s = q.size(); if (s >= k) { k = s - k + 1; while (k--) q.pop(); } } } s = q.size(); if (s < k) printf("-1\n"); else { tot = sum = 0; while (!q.empty()) { now = q.top(); q.pop(); sum += now.x; ans[tot++] = now.id; } printf("%d\n", sum); printf("%d\n", tot); sort(ans, ans + tot); for (i = 0; i < tot; i++) printf("%d%s", ans[i], (i == tot - 1) ? "\n" : " "); } return 0;}

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>