hdu4907(小技巧)

来源:互联网 发布:淘宝上卖画 编辑:程序博客网 时间:2024/06/05 20:44

题意很简单就不说了,这题暴力肯超时,用哈希表,从后往前遍历扫出每个值之后空闲的位置

貌似并差集也可以做

/** this code is made by LinMeiChen* Problem:* Type of Problem:* Thinking:* Feeling:*/#include<iostream>#include<algorithm>#include<stdlib.h>#include<string.h>#include<stdio.h>#include<math.h>#include<string>#include<vector>#include<queue>#include<list>using namespace std;typedef long long lld;typedef unsigned int ud;#define oo 0x3f3f3f3f#define maxn 200014int Hash[maxn];int main(){    int T, n, m, va, last;    scanf("%d", &T);    while (T--)    {        scanf("%d%d", &n, &m);        memset(Hash, 0, sizeof Hash);        for (int i = 1; i <= n; i++)        {            scanf("%d", &va);            Hash[va] = 1;        }        for (int i = maxn - 1; i >= 0; i--)        {            if (Hash[i] == 0)            {                last = i;                Hash[i] = last;            }            else                Hash[i] = last;        }        for (int i = 1; i <= m; i++)        {            scanf("%d", &va);            printf("%d\n", Hash[va]);        }    }    return 0;}

0 0
原创粉丝点击