HDU 4907 - Task schedule(BestCoder Round #3 简单DP)

来源:互联网 发布:企业办公网络组网方案 编辑:程序博客网 时间:2024/05/17 21:40

题目链接 HDU4907

【分析】 比赛的时候忘记考虑查询点大于给出点的情况了,然后竟然也过了小数据,结果后来大数据WA了,再过来看马上发现错误了(相当郁闷啊);

其实这题就是DP的记录一下每个点右边最近的没有任务的点,后来的询问应该题目说了询问之间没有关联,所以不需要更新了(记得最近做了好题这种类型的,上次百度之星的初赛(HDU4831)也有比这个难一点的需要更新的,郁闷啊),惨痛的教训)

 

【AC CODE】187ms

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MAXN 100010bool vis[2 * MAXN];int dp[2 * MAXN];int main(){#ifdef SHYfreopen("e:\\1.txt", "r", stdin);#endifint t;scanf("%d%*c", &t);while(t--){int n, m, a, maxn = 0, p;scanf("%d %d%*c", &n, &m);memset(vis, 0, sizeof(vis));for(int i = 0; i < n; i++){scanf("%d%*c", &a);vis[a] = true;if(maxn < a) maxn = a;}p = maxn + 1;for(int i = maxn; i >= 1; i--){if(!vis[i])p = i;dp[i] = p;}for(int i = 0; i < m; i++){scanf("%d%*c", &a);if(vis[a])printf("%d\n", dp[a]);else printf("%d\n", a);}}return 0;}


 

0 0