hdoj--5233--Gunner II(map+queue&&二分)
2016-03-05 17:52
519 查看
Gunner II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1724 Accepted Submission(s): 631[align=left]Problem Description[/align]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 linefrom 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.[align=left]Input[/align]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],…,hwhich 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)[align=left]Output[/align]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.[align=left]Sample Input[/align]5 5 1 2 3 4 1 1 3 1 4 2[align=left]Sample Output[/align]
1 3 5 4 2 HintHuge input, fast IO is recommended.[align=left]Source[/align]BestCoder Round #42感觉二分写的应该对的啊,但是一直wa错误代码:
#include <cstdio> #include <algorithm> #include <string> #include <cstring> #include <stack> #include<iostream> using namespace std; struct Node { int num,hight; bool flg; }a[110000]; bool cmp(Node x,Node y) { if(x.hight == y.hight )return x.num<y.num; return x.hight<y.hight; } int b_search(int val,int len) { int l=0,r=len-1,mid; while(l<=r) { mid=(l+r)/2; if(a[mid].hight<val)l=mid+1; else if(a[mid].hight == val && a[mid].flg == false)l=mid+1; else r=mid-1; } return l; } int main() { int m,n,i,j,cy,ans,ji; while(~scanf("%d %d",&n,&m)) { for(i=0;i<n;i++) { scanf("%d",&a[i].hight); a[i].num=i+1; a[i].flg=true; } sort(a,a+n,cmp); for(i=0;i<m;i++) { scanf("%d",&ji); ans=b_search(ji,n); a[ans].flg=false; if(a[ans].hight==j) printf("-1\n"); else { a[ans].flg=false; cout<<a[ans].num<<endl; } } } return 0; }map+queue
#include<cstdio>#include<map>#include<list>#include<queue>#include<string>#include<algorithm>using namespace std;int main(){int n,m;while(~scanf("%d%d",&n,&m)){map<int,queue<int> >mp;int tmd;for(int i=1;i<=n;i++){scanf("%d",&tmd);mp[tmd].push(i);}while(m--){scanf("%d",&tmd);queue<int> &p=mp[tmd];if(p.empty()) printf("-1\n");else{printf("%d\n",p.front());p.pop();}}}return 0;}
相关文章推荐
- GUI相关学习资料
- String,StringBuffer与StringBuilder的区别
- duilib Webkit内核dui化浏览器控件
- jsp Request获取url信息的各种方法比较
- POJ1986 Distance Queries(树链剖分LCA)
- request.getScheme()+"://"+request.getServerName()+":"+request.getServerP
- 顺序表(Sequential List)
- android中SQLlite数据库中对应的SQL数据库的查询 query ,delete,insert
- 面试常客Handler详细解析(Handler与Looper、MessageQueue的关系)(二)
- UITextfield属性(初级篇)
- 由SequenceFile.Writer(key,value)谈toString()方法
- UESTC--1251--谕神的密码(贪心)
- UESTC--1251--谕神的密码(贪心)
- 需要优化软件UI,so 沉寂许久之后开始学习界面的课程,把文档直接贴过来自己试着翻译
- 《腾讯网UED体验设计之旅》读后感
- self表示的是当前类开辟内存的对象(文档里写的是当前的消息接受者 Return Value: The receiver.)
- hdoj-1058(优先队列)---priority_queue====丑数
- HDU 4126 Genghis Khan the Conqueror(最小生成树)
- iOS之UIScrollView常用属性和用法总结
- DataBase -- Employees Earning More Than Their Managers My Submissions Question