zoukankan      html  css  js  c++  java
  • Gunner II (离散化 map + set ) HDU 5233

    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.
     
    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)
     
    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.
     
    Sample Input
    5 5 1 2 3 4 1 1 3 1 4 2
     
    Sample Output
    1 3 5 4 2
    Hint
    Huge input, fast IO is recommended.
     
    Source
     
     
     
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <map>
    #include <vector>
    #include <set>
    #include <queue>
    #include <stack>
    #include <cmath>
    using namespace std;
    const int INT=1e6+5;
    typedef long long ll;
    #define pql priority_queue<ll>
    #define pq priority_queue<int>
    #define v vector<int>
    #define vl vector<ll>
    #define lson rt<<1, l, m
    #define rson rt<<1|1, m+1, r
    #define read(x) scanf("%d",&x)
    #define lread(x) scanf("%lld",&x);
    #define pt(x) printf("%d
    ",(x))
    #define yes printf("YES
    ");
    #define no printf("NO
    ");
    #define gcd __gcd
    #define cn(n) cin>>n;
    #define line cout<<endl;
    #define rep(j,k) for (int i = (int)(j); i <= (int)(k); i++)
    #define input(k) for (int i = 1; i <= (int)(k); i++)  {cin>>a[i] ; }
    #define mem(s,t) memset(s,t,sizeof(s))
    #define ok return 0;
    #define TLE std::ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    
    int main()
    {
        TLE;
        int n,m,k;
        while(cin>>n>>m)
        {
            map<int ,set<int> >me;
            set<int>::iterator it;
            for(int i=1;i<=n;i++)
            {
                cin>>k;
                me[k].insert(i);
            }
            for(int i=1;i<=m;i++)
            {
                cin>>k;
                if(me[k].empty())
                    cout<<-1<<endl;
                else
                {
                    it = me[k].begin();
                    cout<<*it<<endl;
                    me[k].erase(it);
                }
            }
        }
        ok;
    }
     
    所遇皆星河
  • 相关阅读:
    python+opencv实现图像缩放
    vim 常用指令-持续更新
    python实现简单的SVM
    linux查看当前目录下,各文件夹大小
    python解析json文件信息到csv中
    根据小图文件名在原图画框
    BZOJ1079: [SCOI2008]着色方案 (记忆化搜索)
    BZOJ1044: [HAOI2008]木棍分割 (二分 + DP)
    gym100825G. Tray Bien(轮廓线DP)
    BZOJ1237: [SCOI2008]配对
  • 原文地址:https://www.cnblogs.com/Shallow-dream/p/11530624.html
Copyright © 2011-2022 走看看