hdu 5884二分+优先队列
来源:互联网 发布:团购网站 淘宝折扣 编辑:程序博客网 时间:2024/05/01 21:29
PS:当初比赛的时候总是超时,以后优先队列放在函数外边吧,能节省一些时间。然后怎么还是不能理解(n - 1)% (k - 1)== 0最小,然后当成一个结论来记吧,k叉哈夫曼树。
#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int,int> P;typedef set<int>::iterator ITER;#define fi first#define se second#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x)const int maxn = 1e5 + 10;//const int Mod = 1e9 + 7;//const int N = 2;/* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||// \ / _||||| -:- |||||- \ | | \\\ - /// | | | \_| ''\---/'' | | \ .-\__ `-` ___/-. / ___`. .' /--.--\ `. . __ ."" '< `.___\_<|>_/___.' >'"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / /======`-.____`-.___\_____/___.-`____.-'====== `=---='^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pass System Test!*/int n;ll m;int a[maxn];int sum[maxn];priority_queue<ll,vector<ll>,greater<ll> >q;ll calc(int k){ while(!q.empty())q.pop(); ll ret = 0; int temps = (n - 1)%(k - 1); if(temps)temps += 1,ret += sum[temps],q.push(sum[temps]); for(int i = temps + 1; i <= n; i ++)q.push(a[i]); int tmp = (n - 1) / (k- 1); while(tmp --) { ll temp = 0; for(int i = 0; i < k; i ++) temp += 1ll * q.top(),q.pop(); ret += temp; q.push(temp); } return ret;}int main(){// freopen("out.txt","r",stdin); int Tcase;scanf("%d",&Tcase); while(Tcase --) { scanf("%d%I64d",&n,&m); for(int i = 1; i <= n; i ++) scanf("%d",&a[i]); sort(a + 1,a + n + 1); sum[0] = 0; for(int i = 1; i <= n; i ++) sum[i] = sum[i - 1] + a[i]; if(n == 1) { puts("0");continue; } int l = 2,r = n; int ans = 0; while(l <= r) { int mid = (l + r) >> 1; if(calc(mid) <= m) { ans = mid;r = mid - 1; } else l = mid + 1; } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu 5884二分+优先队列
- hdu 5884- Sort 哈夫曼树构造 + 模拟优先队列 + 二分
- hdu 5884 二分+队列
- 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5884 Sort (二分+优先队列)★
- hdu 5884 Sort(优先队列)
- 【HDU 5884】Sort(哈夫曼+优先队列)
- uva1422 - Processor 二分+优先队列
- Processor(二分搜索,优先队列)
- HDU-1509 优先队列
- hdu 4006 优先队列
- hdu 2757 优先队列
- HDU 4006 优先队列
- hdu 1509 优先队列
- HDU 4006优先队列
- hdu 1873优先队列
- 【优先队列】HDU Rescue
- HDU 4546 优先队列
- hdu 5437 (优先队列)
- Xamarin.Fomrs 用户界面——控件——主题——自定义主题
- PAT-Deduplication on a Linked List
- linux中的DNS解析服务
- 【Java学习笔记】28:再谈四种内部类
- Java中的ForEach的用法
- hdu 5884二分+优先队列
- A
- 智能指针
- Java类和对象 详解(二)
- [HDU
- Xamarin.Forms 用户界面——控件——WebView
- Vue Vue-Cli
- 【复习笔记】手写三种O(n^2)的基础排序算法
- [px4仿真]单独启动编译和Gazebo仿真器