POJ 2051 堆
来源:互联网 发布:路径规划软件 编辑:程序博客网 时间:2024/04/28 04:51
这题就是一个小顶堆而已
注意结构体里小于号的重载 重载结果的不同会导致写法的不同
#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <queue>#include <map>#include <set>#define eps 1e-5#define MAXN 111111#define MAXM 111111#define INF 1000000000using namespace std;struct wwj{ int id, inter, tm; wwj(){} wwj(int a, int b){id = a; inter = b;} bool operator >(const wwj& a)const { if(a.tm == tm) return a.id < id; else return a.tm < tm; }}p[100005], q[11111];char s[20];int r;void up(int i){ int j; while(i > 1) { j = i / 2; if(q[j] > q[i]) swap(q[i], q[j]); else break; i = j; }}void down(int i){ int j; while(i * 2 <= r) { j = i * 2; if(j + 1 <= r && q[j] > q[j + 1]) j++; if(q[i] > q[j]) swap(q[i], q[j]); else break; i = j; }}void del(){ swap(q[1], q[r]); r--; down(1);}void insert(wwj x){ q[++r] = x; up(r);}int main(){ int cnt = 0, k; r = 0; while(scanf("%s", s) != EOF) { if(s[0] == '#') break; scanf("%d%d", &p[cnt].id, &p[cnt].inter); p[cnt].tm = p[cnt].inter; insert(p[cnt]); cnt++; } scanf("%d", &k); while(k--) { wwj A = q[1]; del(); printf("%d\n", A.id); A.tm += A.inter; insert(A); } return 0;}
- poj 2051 最小堆
- POJ 2051 堆
- poj 2051 - Argus(堆)
- 堆 POJ
- POJ 2051(最小堆/优先队列)
- POJ 1442 堆
- 【堆】poj 1441
- poj 2010 二叉堆
- POJ 2010 堆
- poj 1442 堆操作
- POJ 2442 Sequence(堆)
- POJ 2442 Sequence【堆】
- POJ 3784 二叉堆
- poj-2833 堆排序
- poj 2388 堆排序
- poj 2833 堆排序
- POJ 2442 Sequence 堆
- poj 3253 (二叉堆)
- 支付宝接口文档。
- SWT/Jface CTabFolder隐藏或增加标签页高度问题
- Linux 线程同步---条件变量
- 多校3-1006 线段树+离散化
- Linux中Oracle10g自动备份
- POJ 2051 堆
- JAVA NIO总结(一)—基本概念
- 在手机启动时自动启动 Android 程序
- Anthem.net控件的使用
- 可任意自定义的UITableViewCell
- 黑马程序员——for循环详细解析
- Android2.2中WifiManager.calculateSignalLevel函数的BUG
- 使用SQL语句从数据库一个表中随机获取数据
- 百万级访问网站前期的技术准备