Codeforces Round #576 (Div. 2) D. Welfare State

Posted jiamian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #576 (Div. 2) D. Welfare State相关的知识,希望对你有一定的参考价值。

 

http://codeforces.com/contest/1199/problem/D

 

技术图片

Examples

input1

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

output1

3 2 3 4 

input2

5
3 50 2 1 10
3
1 2 0
2 8
1 3 20

output2

8 8 20 8 10 

Note

In the first example the balances change as follows: 1 2 3 4 → 3 3 3 4 → 3 2 3 4 → 3 2 3 4

In the second example the balances change as follows: 3 50 2 1 10 → 3 0 2 1 10 → 8 8 8 8 10 → 8 8 20 8 10

 

这题很简单 ,可以用线段树做,蒟蒻的我表示不会,只好再另找方法

 

有两种操作:

操作1(单点修改操作):将x位置处的值变为y

操作2(更新修改操作):输入一个z值,将数组中所有小于z的都改为z

 

如果没进行单点修改操作,后面更新修改操作的大值会覆盖掉前面更新修改操作的小值

如果该数进行过单点修改操作,那么在该操作之前的操作对该数均无效,只有后面的更新修改操作会生效

如果有10个操作数

c数组形式可能为

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10

9  9  9  7  7  3   2  2  0  0 

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <queue>
 8 #include <set>
 9 #include <math.h>
10 const int INF=0x3f3f3f3f;
11 using namespace std;
12 #define maxn 200010
13 
14 int a[maxn];//存放数据
15 int b[maxn];//存放单点修改操作的最后一次操作标号 
16 int c[maxn];//存放更新修改操作,存要修改的值,下标为操作标号 
17 
18 int main()
19 
20     int n;
21     scanf("%d",&n);
22     for(int i=1;i<=n;i++)
23     
24         scanf("%d",&a[i]);
25     
26     int q;
27     scanf("%d",&q);
28     for(int i=1;i<=q;i++)
29     
30         int t;
31         scanf("%d",&t);
32         if(t==1) //单点修改操作 
33         
34             int x,y;
35             scanf("%d %d",&x,&y);
36             a[x]=y;//直接改值
37             b[x]=i;//记录该位置最后一次单点操作标号
38         
39         else if(t==2)//更新修改操作 
40         
41             scanf("%d",&c[i]);//记录该操作标号下的更新处理的值 
42         
43     
44     for(int i=q-1;i>=1;i--)//后面大值会覆盖之前的小值,c[1]为最大值 
45     
46         c[i]=max(c[i],c[i+1]);
47     
48     for(int i=1;i<=n;i++)
49     
50         printf("%d ",max(a[i],c[b[i]+1]));
51     
52     return 0;
53 

 

以上是关于Codeforces Round #576 (Div. 2) D. Welfare State的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #576 (Div. 2) D. Welfare State

codeforces 576c// Points on Plane// Codeforces Round #319(Div. 1)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)

Codeforces 576C. Points on Plane(构造)