hdu-5199(离线化)
来源:互联网 发布:福建省人口普查数据 编辑:程序博客网 时间:2024/05/17 03:29
Gunner
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 769 Accepted Submission(s): 347
Problem Description
Long long ago, there is a gunner whose name is Jack. He likes to go hunting very much. One day he go to the grove. There are n birds and n trees. The i−th bird stands on the top of the i−th tree. The trees stand in straight line from left to the right. Every tree has its height. Jack stands on the left side of the left most tree. When Jack shots a bullet in height H to the right, the bird which stands in the tree with height H will falls.
Jack will shot many times, he wants to know how many birds fall during each shot.
a bullet can hit many birds, as long as they stand on the top of the tree with height ofH .
Jack will shot many times, he wants to know how many birds fall during each shot.
a bullet can hit many birds, as long as they stand on the top of the tree with height of
Input
There are multiple test cases (about 5), every case gives n,m in the first line, n indicates there are n trees and n birds, m means Jack will shot m times.
In the second line, there aren numbers h[1],h[2],h[3],…,h[n] which describes the height of the trees.
In the third line, there are m numbersq[1],q[2],q[3],…,q[m] which describes the height of the Jack’s shots.
Please process to the end of file.
[Technical Specification]
1≤n,m≤1000000(106)
1≤h[i],q[i]≤1000000000(109)
All inputs are integers.
In the second line, there are
In the third line, there are m numbers
Please process to the end of file.
[Technical Specification]
All inputs are integers.
Output
For each q[i] , output an integer in a single line indicates the number of birds Jack shot down.
Sample Input
4 31 2 3 41 1 4
Sample Output
101题意:Gunner
Time Limit: 8000/4000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)问题描述很久很久以前,有一个叫Jack的枪手。他非常喜欢打猎。一天,他去了一个小树林。那儿有n 只鸟,还有n 棵树。第i 只鸟站在第i 棵树的顶端。这些树从左到右排成一条直线。每一棵树都有它的高度。Jack站在最左边那棵树的左边。当Jack在高度为H 的地方向右发射一棵子弹时,站在高度为H 的树上的鸟儿就会落下来。Jack会射击多次,他想知道每次射击会有多少鸟儿落下来。输入描述多组测试数据(大概5 组),每一组的第一行给出n,m ,n 表示有n 棵树和n 只鸟,m 表示Jack会射击m 次。在第二行,有n 个整数,h[1],h[2],h[3],…,h[n] 表示这些树的高度。在第三行,有m 个整数,q[1],q[2],q[3],…,q[m] 表示Jack射击的高度。[参数约定]1≤n,m≤1000000(106) 1≤h[i],q[i]≤1000000000(109) 输出描述对于每一个
q[i] ,在一行中输出Jack射落了几只鸟。输入样例4 31 2 3 41 1 4输出样例101Hint大数据输入,推荐使用快速读读入。思路: 显然这道题数据太大,直接开1e9的数组是不可能的但是可以用离线化 ,将数据缩小,因为输入的数据是不可能超过2*1e6的那么就将1,1000,1000000转化为1,2,3基本方法就是排序、去重、用二分在数组中找出对应位置代码:#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <sstream>#include <algorithm>#include <queue>#include <cmath>#include <stack>#include <vector>#include <map>#define maxn 205using namespace std;const int inf=0x3f3f3f3f;map<int,int>mapp;int num[2000005];int h[1000005];int q[1000005];int vis[1000005];int er(int len, int goal){ int low = 0; int high = len - 1; while(low <= high) { int middle = (low + high)/2; if(num[middle] == goal) return middle; else if(num[middle] > goal) high = middle - 1; else low = middle + 1; } return -1;}int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF) { for(int i=0;i<n;i++) scanf("%d",h+i),num[i]=h[i]; for(int i=n;i<n+m;i++) scanf("%d",q+i-n),num[i]=q[i-n]; sort(num,num+n+m); int len=unique(num,num+n+m)-num; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { int x=er(len,h[i]); vis[x]++; } for(int i=0;i<m;i++) { int x=er(len,q[i]); printf("%d\n",vis[x]); vis[x]=0; } } return 0;}但是因为我没有用快速读入,所以C++可以过,G++会TLE
复制去Google翻译翻译结果
0 0
- hdu-5199(离线化)
- hdu 4288 Coder (离线)
- hdu 3333(树状数组,离线,离散化)
- hdu 5862(离线化+线段树+扫描线)
- hdu 3333 离散化+离线操作
- hdu 4288 线段树+离线+离散化
- hdu 3938(离线并查集)
- hdu 4638 Group (树状数组+离线)
- HDU 4638 Group(离线 + 树状数组)
- HDU 4031 Attack(离线+线段树)
- hdu 5057(树状数组+离线处理)
- [ACM] HDU 5139 Formula (离线处理)
- hdu-5057(离线的树状数组)
- Hdu 5200 Trees (离线线段树)
- HDU--3333(树状数组+离线处理)
- hdu 5139 Formula(离线处理)
- Minimum Cut (hdu 5452 离线LCA)
- hdu 3874(树状数组+离线算法)
- 组队赛#1 解题总结 ZOJ 3803 YY's Minions (DFS搜索+模拟)
- 在导入已经存在的MyEclipse工程时出现错误
- 我目前使用redis在以下几个地方
- 关于java的初始化
- POJ 3264 Balanced Lineup (RMQ)
- hdu-5199(离线化)
- Hbase学习全程记录——使用Eclipse构建HBase开发环境
- Android 异步加载解决方案
- Sublime Text 3快捷键
- 队列的C语言实现
- sort简单分析
- XML解析
- java 集合Map架构
- 并发编程的几点