hiho 1269 优化延迟 二分 优先队列
来源:互联网 发布:淘宝被投诉未生产 编辑:程序博客网 时间:2024/04/27 01:57
题目
题目链接:http://hihocoder.com/problemset/problem/1269
题目来源:hiho的比赛。
简要题意:给定计算惩罚值的公式,求出不超过某阈值最小的缓存大小。
题解
题目里头说的东西很明白,就是个堆。
惩罚值应该是单调递减的,然后直接二分缓存大小再去用堆来模拟,进行判断。
做的时候某个LL写成了int,然后后面被64位整数的输入输出坑了,换cin过掉。
代码
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <stack>#include <queue>#include <string>#include <vector>#include <set>#include <map>#define fi first#define se secondusing namespace std;typedef long long LL;typedef pair<int,int> PII;// headconst int N = 1e5+5;int a[N];LL cal(int len, int n) { priority_queue<int> q; LL cnt = 1; LL ans = 0; for (int i = 0; i < n; i++) { if (q.size() == len) { ans += cnt * q.top(); cnt++; q.pop(); } q.push(a[i]); } while (!q.empty()) { ans += cnt * q.top(); cnt++; q.pop(); } return ans;}int solve(int n, LL q) { int l = 1, r = n, ans = n; while (l <= r) { int mid = (l+r) / 2; LL temp = cal(mid, n); if (temp <= q) { ans = mid; r = mid-1; } else { l = mid+1; } } return ans;}int main() { int n; LL q; while (cin >> n >> q) { for (int i = 0; i < n; i++) { cin >> a[i]; } if (cal(n, n) > q) { cout << -1 << endl; } else { cout << solve(n, q) << endl; } } return 0;}
0 0
- hiho 1269 优化延迟 二分 优先队列
- hiho一下 第136周 #1269 : 优化延迟 【二分+堆排序|优先队列】
- hihoCoder #1269 : 优化延迟 【二分 + 优先队列】
- HihoCoder 1269 优化延迟(二分、优先队列)
- hihocoder 136 #1269 优化延迟 二分+优先队列
- hihocoder1269 优化延迟(二分&优先队列)
- hihoCoder--1469 优化延迟(二分+优先队列)
- hiho一下 第136周-优化延迟(二分)
- [Offer收割]编程练习赛1 hihocoder 1269 优化延迟 (二分+优先权队列)
- hiho 1269(二分)
- dijstra+优先队列优化
- 优先队列优化 dijkstra
- Dijkstra(优先队列优化)
- Dijkstra优先队列优化
- uva1422 - Processor 二分+优先队列
- Processor(二分搜索,优先队列)
- hdu 5884二分+优先队列
- 队列:二分+读入优化+优化
- envsetup.sh与mm命令、mmm命令说明
- sql server 清除系统错误日志,消息队列产生大量日志
- id & instancetype
- 关于WeiPHP
- Android 将一张图片变为圆形图片
- hiho 1269 优化延迟 二分 优先队列
- AVPlayer实现视频播放功能
- CSS中!important的使用
- Android开源组件加载网络图片的优缺点比较
- 前端冷知识
- 2016-3-7Q&A
- PhantomJS入门
- Android drawable in xml study
- 转:Selenium WebDriver 中鼠标和键盘事件分析及扩展