题目大意:给定一个长度为 N 的数组,以及 M 个区间,给出的区间有两个性质,性质一是给定区间中的元素单调不减,性质二是给定区间中的元素存在相邻单调减的元素对,求构造一个符合给定区间条件的序列,若不存在,则输出 NO。

题解:没有从差分的角度进行考虑,WA 到吐血。。。

区间增减性的问题应该从差分角度进行考虑。对于 [l,r] 中元素单调不减时,对应的差分数组 [l+1,r] 应该每一项均大于等于 0;对于 [l,r] 中元素存在单调减的相邻数对时,对应的差分数组应该至少存在一项使得 d[i] = 0 成立。

发现对于存在性命题来说,要求较弱,而对于单调不减来说要求较高。因此,初始化差分数组为严格单调减,即:d[i] = -1。对于所有的性质一来说,将差分数组赋值为大于等于 0 的数字。处理完所有的性质一区间之后,再处理性质二的区间,对于每个性质二的区间,只需要进行判定是否存在一个小于 0 的差分数即可。

代码如下

#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
using namespace std;
const int maxn=1010;
typedef pair<int,int> PI; int n,m,d[maxn],a[maxn];
vector<PI> rec; int main(){
scanf("%d%d",&n,&m);
for(int i=2;i<=n;i++)d[i]=-1; for(int i=1;i<=m;i++){
int t,l,r;
scanf("%d%d%d",&t,&l,&r);
if(t==0)rec.pb(mp(l,r));
else{
for(int j=l+1;j<=r;j++)d[j]=1;
}
}
for(auto v:rec){
int l=v.fi,r=v.se;
bool ok=0;
for(int i=l+1;i<=r;i++){
if(d[i]==-1){
ok=1;
break;
}
}
if(ok==0)return puts("NO"),0;
}
puts("YES");
a[1]=10000;
for(int i=2;i<=n;i++)a[i]=a[i-1]+d[i];
for(int i=1;i<=n;i++)printf("%d ",a[i]); return 0;
}

【CF1187C】Vasya And Array的更多相关文章

  1. 【02】[].slice和Array.prototype.slice

    [02][].slice和Array.prototype.slice 01,Array是一个构造函数.浏览器内置的特殊对象.   02,Array没有slice方法. 03,Array.prototy ...

  2. 【LeetCode】659. Split Array into Consecutive Subsequences 解题报告(Python)

    [LeetCode]659. Split Array into Consecutive Subsequences 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id ...

  3. 【CF493E】【数学】Vasya and Polynomial

    Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...

  4. 【leetcode81】Product of Array Except Self

    题目描述: 给定一个长度为n的整数数组Array[],输出一个等长的数组result[],这个输出数组,对应位置i是除了Array[i]之外,其他的所有元素的乘积 例如: given [1,2,3,4 ...

  5. 【leetcode】905. Sort Array By Parity

    题目如下: 解题思路:本题和[leetcode]75. Sort Colors类似,但是没有要求在输入数组本身修改,所以难度降低了.引入一个新的数组,然后遍历输入数组,如果数组元素是是偶数,插入到新数 ...

  6. 【leetcode】Merge Sorted Array

    题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assu ...

  7. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  8. 【Codeforces718C】Sasha and Array 线段树 + 矩阵乘法

    C. Sasha and Array time limit per test:5 seconds memory limit per test:256 megabytes input:standard ...

  9. 【LeetCode】Product of Array Except Self

    Product of Array Except Self Given an array of n integers where n > 1, nums, return an array outp ...

随机推荐

  1. JWT With NetCore WebApi

    1 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象 ...

  2. NOIp2016 D2T3 愤怒的小鸟【搜索】(网上题解正解是状压)

    题目传送门 没啥别的想法,感觉就是搜索,经过原点的抛物线已知两个点就可以求出解析式,在还没有被打下来的两个猪之间随意配对,确定解析式之后标记在这个抛物线下被打下来的猪. 猪也可以单独用一个抛物线打下来 ...

  3. default.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. flask add_url_rule的使用

    from flask import Flask,url_for #url_for 接受两个参数(endpoint,**value)endpoint没有指定就是默认的函数名,根据 view_func._ ...

  5. ipcs查看消息队列命令

    修改消息队列大小: root:用户: /etc/sysctl.conf kernel.msgmnb =4203520 #kernel.msgmnb =3520 kernel.msgmni = 2878 ...

  6. Tableau常用函数、功能

    Tableau常用函数 创建计算字段: Tableau常用功能

  7. IIS写权限漏洞和XFF刷票原理

    IIS写权限漏洞 PUT写入漏洞 此漏洞主要是因为服务器开启了webdav的组件导致的 1.扫描漏洞,yes,可以PUT: 2.用老兵的工具上传一句话文件test.txt,然后move改名为shell ...

  8. (5.9)mysql高可用系列——正常主从切换测试

    [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制. 主库IP:192.168 ...

  9. (public丶private丶protected) 的理解

    public(公有):公有的类成员可以在任何地方被访问. protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问. private(私有):私有的类成员则只能被其定义所在的类访 ...

  10. 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...