• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

CodeforcesRound#210(Div.2)C.LevkoandArrayRecovery

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

题目链接

线段树的逆过程,想了老一会,然后发现应该是包含区间对存在有影响,就不知怎么做了。。。然后尚大神,说,So easy,你要倒着来,然后再正着来,判断是不是合法就行了。然后我乱写了写,就过了。数据难道又水了。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <queue>
 5 #include <algorithm>
 6 using namespace std;
 7 int p[5001],o[5001],ans[5001];
 8 int t[5001],l[5001],r[5001],d[5001];
 9 int main()
10 {
11     int n,m,i,j,flag,maxz;
12     scanf("%d%d",&n,&m);
13     for(i = 1;i <= n;i ++)
14     p[i] = -10000000;
15     for(i = 1;i <= m;i ++)
16     {
17         scanf("%d%d%d%d",&t[i],&l[i],&r[i],&d[i]);
18     }
19     flag = 0;
20     for(i = m;i >= 1;i --)
21     {
22         if(t[i] == 1)
23         {
24             for(j = l[i];j <= r[i];j ++)
25             p[j] -= d[i];
26         }
27         else
28         {
29             for(j = l[i];j <= r[i];j ++)
30             {
31                 if(o[j]&&p[j] < d[i]) continue;
32                 p[j] = d[i];
33                 o[j] = 1;
34             }
35         }
36     }
37     for(i = 1;i <= n;i ++)
38     ans[i] = p[i];
39     for(i = 1;i <= m;i ++)
40     {
41         if(t[i] == 1)
42         {
43             for(j = l[i];j <= r[i];j ++)
44             p[j] += d[i];
45         }
46         else
47         {
48             maxz = -1000000000;
49             for(j = l[i];j <= r[i];j ++)
50             {
51                 maxz = max(maxz,p[j]);
52             }
53             if(maxz != d[i]) flag = 1;
54         }
55     }
56     if(flag)
57     printf("NO\n");
58     else
59     {
60         printf("YES\n");
61         for(i = 1;i <= n;i ++)
62         {
63             if(i == 1)
64             printf("%d",ans[i]);
65             else
66             printf(" %d",ans[i]);
67         }
68         printf("\n");
69     }
70     return 0;
71 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
零基础学C#3.0--.net的三层架构发布时间:2022-07-13
下一篇:
请问C#中string是值传递还是引用传递?发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap