HDU4831 - Scenic Popularity(DP或者线段树)

来源:互联网 发布:实名淘宝小号购买 编辑:程序博客网 时间:2024/05/22 12:05

题目链接: HDU4831

【题意】中文题。

【分析】用树状数组 线段树都可以做,但是我这里用了DP思想做,时间复杂度O(n*k),10^7级别,理论上可以过就提交了,然后果然过了。

只要用一个数组p记录每个休息区所对应的风景区,然后每次查询的时候只需要O(N)时间遍历一遍所有点即可;

对于更改操作,这里用到了DP的思想;

先从左往右找出每个休息区左边最近的风景区,用now记录当前最后一个出现的风景区;

在从右往左找出每个休息区右边最近的风景区,然后比较左右两个选择哪个即可。其实就是更新p[],复杂度也是O(N);

【AC CODE】 468ms

#include <cstdio>#include <cstring>#define MAXN 10010int x[MAXN], v[MAXN], p[MAXN], l[MAXN], n;void update(){    int now = -1;    for (int i = 0; i < n; i++)    {        if (!v[i]) l[i] = now;        else now = i;    }    now = -1;    for (int i = n - 1; i >= 0; i--)    {        if (!v[i])        {            if (-1 == now && -1 == l[i]) p[i] = -1;            else if (-1 == now) p[i] = l[i];            else if (-1 == l[i]) p[i] = now;            else if (x[i] - x[l[i]] > x[now] - x[i])                p[i] = now;            else if (x[i] - x[l[i]] == x[now] - x[i])                p[i] = v[l[i]] > v[now] ? l[i] : now;            else p[i] = l[i];        }        else now = i;    }}int main(){#ifdef SHY    freopen("e:\\1.txt", "r", stdin);#endif    int t, count = 0;    scanf("%d%*c", &t);    while(t--)    {        int m, a, b;        scanf("%d%*c", &n);        for(int i = 0; i < n; i++)            scanf("%d %d%*c", &x[i], &v[i]);        update();        scanf("%d%*c", &m);        char ch;        printf("Case #%d:\n", ++count);        for(int i = 0; i < m; i++)        {            while((ch = getchar()) != 'U' && 'Q' != ch);            if('U' == ch)            {                scanf("%d %d%*c", &a, &b);                v[a] = b;                update();            }            else            {                int ans = 0, buf;                scanf("%d%*c", &a);                for(int j = 0; j < n; j++)                {                    if(!v[j] && ~p[j]) buf = v[p[j]];                    else buf = v[j];                    if(buf <= a) ans++;                }                printf("%d\n", ans);            }        }    }    return 0;}


 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 拉绿黑色大便怎么办 胃消化功能差怎么办 肠胃消化功能差怎么办 新生儿大便黄稀怎么办 胃不消化不解大便怎么办 七个月宝宝消化不良怎么办 宝宝上火不拉屎怎么办 三天没拉大便怎么办 宝宝肚子胀积食怎么办 2岁宝宝不消化怎么办 宝宝吃多不消化怎么办 宝贝不消化吐了怎么办 五天没解大便怎么办 婴儿便秘有血怎么办 宝宝大便稀酸臭怎么办 婴儿的屎有酸味怎么办 宝宝解绿色大便怎么办 婴儿大便绿色稀怎么办 新生儿十天拉稀怎么办 16天新生儿便秘怎么办 50天新生儿便秘怎么办 18天新生儿便秘怎么办 5天新生儿便秘怎么办 13天新生儿便秘怎么办 宝宝吃米粉便秘怎么办 吃奶的宝宝便秘怎么办 母乳喂养的宝宝便秘怎么办 纯母乳宝宝便秘怎么办 六月大宝宝便秘怎么办 喝母乳宝宝便秘怎么办 宝宝喝奶粉便秘怎么办 小孩上火拉不出粑粑怎么办 宝宝上火拉不出粑粑怎么办 新生宝宝不大便怎么办 宝宝几天不大便怎么办 40天宝宝便秘怎么办 半个月宝宝便秘怎么办 30天新生儿便秘怎么办 婴儿睡觉抱着睡放不下怎么办 宝宝拉绿大便怎么办 喝奶粉孩子便秘怎么办