ZOJ 3888 Twelves Monkeys (预处理+优先队列)
2015-07-28 09:32
337 查看
题目链接:ZOJ 3888 Twelves Monkeys
题意:题目描述起来比较绕,直接讲案例
9 3 3
9 1
6 1
4 1
6
7
2
输入n,m,q,n限制了你询问的年份,m台时光机,q个询问。
接下来m行,描述从第9年回到第1年。
接下里就是三个询问。
第一个询问6的答案是5.
1.从第6年回到第1年 (6-1)直接做时光机2,(6-7-8-9-1)过3年之后可以做时光机3。有两个路径可以走(题目中要求至少两条路径),所以是有效的方案。
2.从第6年回到第2年
.....
思路:先按第一维排序,查找大于等于X(X是询问的年份)的有多少个,若个数小于2,该方案不可行,若个数大于等于2,在查找所有第一维大于等于X的区间中第二维的第二小的值,答案就是X-第二小的值
AC代码:
题意:题目描述起来比较绕,直接讲案例
9 3 3
9 1
6 1
4 1
6
7
2
输入n,m,q,n限制了你询问的年份,m台时光机,q个询问。
接下来m行,描述从第9年回到第1年。
接下里就是三个询问。
第一个询问6的答案是5.
1.从第6年回到第1年 (6-1)直接做时光机2,(6-7-8-9-1)过3年之后可以做时光机3。有两个路径可以走(题目中要求至少两条路径),所以是有效的方案。
2.从第6年回到第2年
.....
思路:先按第一维排序,查找大于等于X(X是询问的年份)的有多少个,若个数小于2,该方案不可行,若个数大于等于2,在查找所有第一维大于等于X的区间中第二维的第二小的值,答案就是X-第二小的值
AC代码:
#include <stdio.h> #include <algorithm> #include <queue> #include <string.h> using namespace std; struct node { int a,b; }; struct node p[50010]; bool cmp(node a,node b) { if(a.a!=b.a) return a.a>b.a; return a.b>b.b; } int sum[50010]; priority_queue<int, vector<int>, greater<int> > que; int main() { int i,j; int n,m,q,c; while(scanf("%d %d %d",&n,&m,&q)!=EOF) { while(!que.empty()) que.pop(); for(i=0; i<m; i++) { scanf("%d %d",&p[i].a,&p[i].b); } sort(p,p+m,cmp); sum[1]=0; int a1,a2; for(i=n,j=0; i>=2; i--) { for(; j<m; j++) { if(i<=p[j].a) que.push(p[j].b); else break; } if((int)que.size()<2) { sum[i]=0; continue; } a1=que.top(); que.pop(); a2=que.top(); que.pop(); que.push(a1); que.push(a2); if(i-a2<0) sum[i]=0; else sum[i]=i-a2; } while(q--) { scanf("%d",&c); printf("%d\n",sum[c]); } } return 0; }
相关文章推荐
- leetCode 94.Binary Tree Inorder Traversal(二叉树中序遍历) 解题思路和方法
- iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64
- layout_height和height的区别-附match-parent和fill_parent的区别
- java常用的23种设计模式《转》
- Android--利用ViewFlipper实现屏幕切换动画效果
- @产品经理的定位
- leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法
- java playframework
- 嵌入式Linux开发教程:Linux常见命令(上篇)
- jfreechart中文乱码解决办法总结
- Java对数组的复制
- jquery 操作各种元素
- HDUOj 看病要排队 优先队列的使用 题目1873
- js中我定义一个var变量,在页面想显示出来,用什么东西显示比较好,var比较长还有空格
- 差分约束 [1](poj 3159)(简单)
- 转 iOS项目的完整重命名方法图文教程
- poj 2349 Arctic Network
- 10个MySQL性能调优的方法
- LeetCode OJ 之 Different Ways to Add Parentheses(增加括号的不同方法)
- 阮一峰 模块化编程--好文