HihoCoder 1269 优化延迟(二分、优先队列)
来源:互联网 发布:js九九乘法表原理 编辑:程序博客网 时间:2024/04/19 18:12
题意:
不是很好解释,反正中文题目就不写了
分析:
可以发现缓存越大,我们就越能拿出最大的那个数,然后让它的贡献变小
所以这里有单调递减性,随着缓存变大
然后直接二分缓存大小,优先队列模拟即可
代码:
//// Created by TaoSama on 2016-03-06// Copyright (c) 2016 TaoSama. All rights reserved.//#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;typedef long long LL;int n, a[N];LL Q;bool check(int x) { priority_queue<int> q; LL ret = 0; int j = 1; for(int i = 1; i <= n; ++i) { if(q.size() == x) { int cur = q.top(); q.pop(); ret += cur * j++; } q.push(a[i]); } while(q.size()) { int cur = q.top(); q.pop(); ret += cur * j++; } return ret <= Q;}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); scanf("%d%lld%", &n, &Q); for(int i = 1; i <= n; ++i) scanf("%d", a + i); int l = 1, r = 100000; while(l <= r) { int m = l + r >> 1; if(check(m)) r = m - 1; else l = m + 1; } if(l > 100000) l = -1; printf("%d\n", l); return 0;}
0 0
- hihoCoder #1269 : 优化延迟 【二分 + 优先队列】
- HihoCoder 1269 优化延迟(二分、优先队列)
- hihoCoder--1469 优化延迟(二分+优先队列)
- hihocoder 136 #1269 优化延迟 二分+优先队列
- hiho 1269 优化延迟 二分 优先队列
- hihocoder1269 优化延迟(二分&优先队列)
- [Offer收割]编程练习赛1 hihocoder 1269 优化延迟 (二分+优先权队列)
- hiho一下 第136周 #1269 : 优化延迟 【二分+堆排序|优先队列】
- hihoCoder 1269 优化延迟
- hihoCoder#1269 : 优化延迟
- 【2016-北京赛区网络赛-I】枚举,贪心,优先队列,优化(导弹,hihocoder 1391)
- hihocoder # Inventory is Full(记录,优先队列维护)
- uva 1422 - Processor(二分+优先队列)
- UVA-1422(贪心+二分+优先队列)
- Sort 二分 + (队列 + sort 代替优先队列)
- hihocoder #1613 : 墨水滴 bfs+优先队列
- Huffman树(使用优先队列优化)
- 堆(优先队列)优化dijkstra(邻接矩阵)
- 2. Add Two Numbers
- 判断布尔表达式
- Python 使用简单语法
- Ionic开发之路(二)
- VS2010 + OpenCV2.4.3
- HihoCoder 1269 优化延迟(二分、优先队列)
- 数据 (cdq分治)
- 矩阵的叉乘必须记录下来
- ListView.getCount()与ListView.getChildCount()区别
- Python学习(三) 八大排序算法的实现(上)
- DOM访问HTML元素
- Android逆向分析--so文件
- unicode,utf-8,utf-16,utf-32
- 各位之和