Gunner II

编程入门 行业动态 更新时间:2024-10-27 14:28:03

<a href=https://www.elefans.com/category/jswz/34/1693272.html style=Gunner II"/>

Gunner II

题意描述

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.

给定n棵树和猎人能够进行的m次射击,每次射击能够射下相应高度最近树的鸟,询问落下鸟的顺序。

思路

我们可以使用结构体数组来存储树的序号与树的高度,使用两个数组来存储相应的序号和高度,同样可以使用lower_bound来寻找与射击高度相同的树,如果找到,则让对应的下标数组加1,没有找到则置-1。

下面来举个例子,对于样例

5 5
1 2 3 4 1
1 3 1 4 2

排序过后如图:

而对应的low数组和h数组如下:

low[1]=[1],low[2]=5,low[3]=2,low[4]=3,low[5]=4
h[1]=1,h[2]=1,h[3]=2,h[4]=3,h[5]=4

如果寻找到第一颗高为1的树,则low[1]++成为2,当到第二个高为1的样例时,h[low[p]]=5,匹配成功。

AC代码

#include<bits/stdc++.h>
#define x first
#define y second
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<char,char> PCC;
typedef long long LL;
const int N=1e5+10;
const int M=150;
const int INF=0x3f3f3f3f;
const int MOD=998244353;
struct node{int idx,h;
}Node[N];
bool cmp(node a,node b){if(a.h!=b.h) return a.h<b.h;return a.idx<b.idx;
}
int h[N],low[N];
void solve(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++){scanf("%d",&Node[i].h);Node[i].idx=i;}sort(Node+1,Node+1+n,cmp);for(int i=1;i<=n;i++) low[i]=i,h[i]=Node[i].h;for(int i=1;i<=m;i++){int x;scanf("%d",&x);int p=lower_bound(h+1,h+1+n,x)-h;if(h[low[p]]!=x) printf("-1\n");else{printf("%d\n",Node[low[p]].idx);low[p]++;}}}
}
int main(){//IOS;solve();return 0;
}

更多推荐

Gunner II

本文发布于:2024-02-17 08:06:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1693273.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Gunner   II

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!