您现在的位置是:首页 > 数码 > 

CodeForces 60A

2025-07-27 13:28:45
CodeForces 60A 题意: 给定一个序列,然后对其进行两种操作 1   L R W   代表从 a[L ] 到a[R] 全部加上W 2   L R W  代表从  a[L] 到 a[R] 中最大值为 W 问是否存在一个序灭满足上序操作  , 操作数量小于5000 题解: 从尾往前跑  ,   维护序列每

CodeForces 60A

题意:

给定一个序列,然后对其进行两种操作

1   L R W   代表从 a[L ] 到a[R] 全部加上W

2   L R W  代表从  a[L] 到 a[R] 中最大值为 W

问是否存在一个序灭满足上序操作  , 操作数量小于5000

题解:

从尾往前跑  ,   维护序列每个值可存在的最大权值, 然后再从头往后跑,查询该序列是否满足要求

代码:

#include<stdio.h>
#define IF 1000000000
struct ode
{
    int flag, l, r, value;
}cun[5005];
int main()
{
    int Mark[5005], n, m, Mark2[5005];
    while(scanf(%d %d, &n, &m) != EOF)
    {
        for(int i = 0; i < 5005; i)
        Mark[i] = IF;
        int flag = 0;
        for(int i = 1; i <= m; i)
        scanf(%d %d %d %d, &cun[i].flag, &cun[i].l, &cun[i].r, & cun[i].value);
        for(int i = m; i >= 1; i--)
        {
            if(cun[i].flag == 1)
            for(int j = cun[i].l; j <= cun[i].r; j)
            {
                if(Mark[j] != IF)
                Mark[j] -= cun[i].value;
            }
            else
            {
                for(int j = cun[i].l; j <= cun[i].r; j)
                {
                    if(Mark[j] >= cun[i].value)
                    Mark[j] = cun[i].value;
                }
            }
        }
        for(int i = 1; i <= n; i)
        Mark2[i] = Mark[i];
        for(int i = 1; i <= m; i)
        {
            if(cun[i].flag == 1)
            for(int j = cun[i].l; j <= cun[i].r; j )
            Mark[j] = cun[i].value;
            else
            {
                int Max = -IF;
                for(int j = cun[i].l; j <= cun[i].r; j)
                {
                    if(Mark[j] > Max)   Max = Mark[j];
                }
                if(Max != cun[i].value)  { flag = 1; break;}
            }
        }
        if(flag)  {  printf(O\n);  continue;}
        else   printf(YES\n);
        for(int i = 1; i <= n; i)
        printf(%d , Mark2[i]);
        printf(\n);
    }
}


#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/707463.html

相关标签:无
上传时间: 2023-11-21 20:52:03
留言与评论(共有 6 条评论)
本站网友 毒气泄漏
30分钟前 发表
&m) != EOF)     {         for(int i = 0; i < 5005; i)         Mark[i] = IF;         int flag = 0;         for(int i = 1; i <= m; i)         scanf(%d %d %d %d
本站网友 沈阳华润橡树湾
11分钟前 发表
r
本站网友 阳性克隆
2分钟前 发表
m
本站网友 301医院网上预约挂号
4分钟前 发表
& cun[i].value);         for(int i = m; i >= 1; i--)         {             if(cun[i].flag == 1)             for(int j = cun[i].l; j <= cun[i].r; j)             {                 if(Mark[j] != IF)                 Mark[j] -= cun[i].value;             }             else             {                 for(int j = cun[i].l; j <= cun[i].r; j)                 {                     if(Mark[j] >= cun[i].value)                     Mark[j] = cun[i].value;                 }             }         }         for(int i = 1; i <= n; i)         Mark2[i] = Mark[i];         for(int i = 1; i <= m; i)         {             if(cun[i].flag == 1)             for(int j = cun[i].l; j <= cun[i].r; j )             Mark[j] = cun[i].value;             else             {                 int Max = -IF;                 for(int j = cun[i].l; j <= cun[i].r; j)                 {                     if(Mark[j] > Max)   Max = Mark[j];                 }                 if(Max != cun[i].value)  { flag = 1; break;}             }         }         if(flag)  {  printf(O\n);  continue;}         else   printf(YES\n);         for(int i = 1; i <= n; i)         printf(%d 
本站网友 重庆整形医院
21分钟前 发表
Mark2[5005];     while(scanf(%d %d