【贪心】CODE[VS] 3377 [Mz]接水问题2 (模拟+优先队列(堆))
来源:互联网 发布:网络电话录音 编辑:程序博客网 时间:2024/05/01 13:47
考试时的T1
水题,当时晚上没睡好,把m写成3(样例里面m == 3)
然后就非常帅气地一分没有
很水的一道模拟(贪心),模拟接水过程,由于接完水最终时间一定,所以我们不需要管接完了多少,我们只需要知道当前所有水龙头中,总接水时间最短的是哪一个( 用小根堆维护),然后将所有已排好序中最小的哪一个接上去就行了,虽然原题中还特别声明“特别地,同学们在打水前排好了队,接水所用时间更长的先接。”但这其实没用,因为总的接水时间一定,每次贪心将最小的接上,则最后将最大的接上时,其当前所在序列的总接水时间一定是最小的(小根堆性质)
STL优先队列_小根堆的定义:priority_queue< type , vector< type >, greater< type > >;
( type,填你想向优先队列里添加元素的类型 )
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef long long LL;LL n,m;LL xx;LL w[1000002];priority_queue<LL,vector<LL >,greater<LL > > xq;inline LL read(){ char ch; LL data = 0; LL f = 1; while(ch < '0'||ch > '9') { ch = getchar(); if(ch == '-') f = -1; } do{ data = data*10 + ch-'0'; ch = getchar(); }while(ch >= '0'&&ch <= '9');return data*f;}inline void search(){ while(n--) { LL x = xq.top(); xq.pop(); //cout<<xq.top()<<endl; xq.push(x + w[n+1]); } while(!xq.empty()) { xx = max(xq.top(),xx); xq.pop(); //cout<<"xx: "<<xx<<endl; }}int main(){ n = read(); m = read(); //cout<<n<<" "<<m<<endl; for(LL i =1;i<=n;i++) { w[i] = read(); //cout<<"w of "<<i<<" is "<<w[i]<<endl; } sort(w+1,w+1+n); if(n <= m) { printf("%lld\n",w[n]); return 0; } for(LL i = 1;i <= min(n,m);i++) xq.push(0); search(); printf("%lld\n",xx); return 0;}
THE END
By Peacefuldoge
http://blog.csdn.net/loi_peacefuldog
0 0
- 【贪心】CODE[VS] 3377 [Mz]接水问题2 (模拟+优先队列(堆))
- Codevs_P3377 [Mz]接水问题2(STL+优先队列)
- 【贪心】CODE[VS] 1063 NOIP2004普及组-合并果子 (刷题记录(模拟+优先队列))
- codevs 3377 [Mz]接水问题2
- 【codevs 3377】[Mz]接水问题2
- 最小堆模拟优先队列
- POJ2431 二叉堆(优先队列)以及贪心算法
- BZOJ 1150 二叉堆(优先队列) + 贪心
- BZOJ 1029 建筑抢修 【贪心】【优先队列(堆)】
- POJ3253 Fence Repair 贪心+优先队列(堆维护)
- Code[VS] 3377 接水问题2
- POJ 3465 Battle(优先队列+贪心模拟)
- [BZOJ 3523] Bricks 贪心+优先队列/堆
- 优先队列(堆)
- 优先队列(堆)
- 优先队列(堆)
- 优先队列(堆)
- 优先队列(堆)
- 扒一扒 laravel的消息通知(上)
- LeetCode 171. Excel Sheet Column Number
- pip或者pycharm安装模块出错问题
- 汇编语言--寄存器间接寻址
- 设计模式六大原则(1):单一职责原则(转载)
- 【贪心】CODE[VS] 3377 [Mz]接水问题2 (模拟+优先队列(堆))
- 第八周训练a题 Balance
- Cydia安装插件出现Size Mismatch的解决方法
- win10 mysql服务无法启动,提示“服务在启动后停止”
- x64 - reject driver loading
- 迪杰斯特拉算法
- git还原所有修改
- Subline3常用的插件
- windows