hdu5233 Gunner II
来源:互联网 发布:有没有连环画软件 编辑:程序博客网 时间:2024/05/01 13:48
Problem Description
Long long ago, there was 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 nearest bird which stands in the tree with height H will falls.
Jack will shot many times, he wants to know which bird will fall during each shot.
Jack will shot many times, he wants to know which bird will fall during each shot.
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 are n numbers h[1],h[2],h[3],…,h[n] which describes the height of the trees.
In the third line, there are m numbers q[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]
All input items are integers.
1<=n,m<=100000(10^5)
1<=h[i],q[i]<=1000000000(10^9)
In the second line, there are n numbers h[1],h[2],h[3],…,h[n] which describes the height of the trees.
In the third line, there are m numbers q[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]
All input items are integers.
1<=n,m<=100000(10^5)
1<=h[i],q[i]<=1000000000(10^9)
Output
For each q[i], output an integer in a single line indicates the id of bird Jack shots down. If Jack can’t shot any bird, just output -1.
The id starts from 1.
The id starts from 1.
Sample Input
5 51 2 3 4 11 3 1 4 2
Sample Output
13542这道题因为删除方法不对,一直T,终于改用vis后,900多ms水过去了。。#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<vector>#include<map>#include<queue>#include<stack>#include<string>#include<algorithm>using namespace std;struct node{int id,num;}a[100006];int n,vis[100006];bool cmp(node a,node b){if(a.num==b.num)return a.id>b.id;return a.num<b.num;}int q[100006];int find(int x,int l,int r){int mid,j;while(l<=r){mid=(l+r)/2;if(a[mid].num==x)break;if(a[mid].num>x)r=mid-1;else l=mid+1;}j=mid;if(vis[j]==1){j--;while(1){if(vis[j]==0)break;j--;}return j;}else{j++;while(1){if(j>n || vis[j]==1 || a[j].num>x){j--;break;}j++;}return j;}}int main(){int m,i,j,k;while(scanf("%d%d",&n,&m)!=EOF){map<int,int>hash;hash.clear();for(i=1;i<=n;i++){vis[i]=0;scanf("%d",&a[i].num);a[i].id=i;hash[a[i].num]++;}sort(a+1,a+1+n,cmp);for(i=1;i<=m;i++){scanf("%d",&q[i]);if(hash[q[i]]==0){printf("-1\n");continue;}else{hash[q[i]]--;j=find(q[i],1,n);vis[j]=1;printf("%d\n",a[j].id);}}}return 0;}
0 0
- hdu5233 Gunner II
- HDU5233 Gunner II && BestCoder Round #42
- HDU5233 Gunner II 离散化的各种方法
- hdu 5233 Gunner II
- hdu 5233 Gunner II
- hdu 5233 Gunner II
- HDU5233
- HDU ACM 5233 Gunner II
- 【BestCoder】 HDOJ 5233 Gunner II
- HDU 5233 Gunner II (二分)
- hdoj 5233 Gunner II 【二分】
- hdu 5233 Gunner II 【set+map】
- hdu 5233 Gunner II【STL应用】【水题】
- hdu 5233 Gunner II (容器)
- hdu 5233 Gunner II (map离散化)
- HDOJ 5233 Gunner II【二分&&邻接表】
- HDU 5233 Gunner II 数据结构map+vector
- hdu 5233 Gunner II 离散化
- Error when loading the SDK:发现了以元素 'd:skin' 开头的无效内容
- 菜鸟学排序算法
- 分享:15个有趣的大数据经济指数
- #306 (div.2) D. Regular Bridge
- c++公用数据的保护
- hdu5233 Gunner II
- CF 549D. Haar Features(神奇,不知道怎么推出来的)
- quick-cocos2d-x如何在mac下编译安卓版本
- 第七章
- 使用Unversial-image-loader来异步加载网络图片和本地图片(二)完结篇
- 点击按钮切换图片
- 关于mexfuntion超级好的输入输出总结
- 第3题
- vs2010中添加qt的对话框