Codeforces 360A(找性质)

Posted alphawa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 360A(找性质)相关的知识,希望对你有一定的参考价值。

反思

  • 写一写可以发现上限不断更新
  • 一直在想怎么判断NO,刻板拘泥于错误的模型,想要像往常一样贪心地、读入当前值就能判断会不会NO,实际上只要构造完以后,最后把所有操作重新跑一遍看会不会冲突即可判断NO
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int maxn = 5005;
int n, m, a[maxn];
int op[maxn], l[maxn], r[maxn], d[maxn];
int maxval[maxn], add[maxn];

int main() 
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++)
        maxval[i] = 1e9;
    
    for (int i = 1; i <= m; i++) 
        scanf("%d %d %d %d", &op[i], &l[i], &r[i], &d[i]);
        if (op[i] == 1) 
            for (int j = l[i]; j <= r[i]; j++)
                add[j] += d[i];
         else 
            for (int j = l[i]; j <= r[i]; j++)
                maxval[j] = min(maxval[j], d[i] - add[j]);
        
    

    for (int i = 1; i <= n; i++)
        a[i] = maxval[i];
    for (int i = 1; i <= m; i++) 
        if (op[i] == 1) 
            for (int j = l[i]; j <= r[i]; j++)
                a[j] += d[i];
         else 
            int minn = -1e9;
            for (int j = l[i]; j <= r[i]; j++)
                minn = max(minn, a[j]);
            if (minn != d[i])   return puts("NO");
        
    
    puts("YES");
    for (int i = 1; i <= n; i++)
        printf("%d ", maxval[i]);

以上是关于Codeforces 360A(找性质)的主要内容,如果未能解决你的问题,请参考以下文章

我的CodeF水A题之路

Codeforces675 D. Tree Construction(构造,二叉排序树性质)

Codeforces Round #448 (Div. 2)C. Square Subsets

深圳360A级安全认证平台哪个收益最高值得年底存放资金?

CodeForces937B:Vile Grasshoppers(素数性质)

Codeforces 686 D - Kay and Snowflake