题目大意:给定一个长度为 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. 反爬虫2(代理ip)

    在进行爬虫访问时,被访问主机除了会校验访问身份,还会校验访问者的ip, 当短时间同ip大量访问时,主机有可能会拒绝 返回,所以就现需要代理ip, 百度中可以获取到大量的免费的代理ip(ps:注意在访问 ...

  2. 华为HCNA乱学Round 8:生成树

  3. C++学习笔记-static

    static做为关键字,在C++语言中运用在类中,代表着这个属性或者方法属于这个类 如果生成的对象修改了这个成员,那么其他对象共享修改后的值 定义和初始化 class ABC { public: in ...

  4. 浅谈Web图像优化

    前端优化有很多,图像优化也是其中的一部分.无论是渐进增强还是优雅降级,图像优化成为了开发上不可忽视的一部分. 知其然,须知其所以然 图像优化的前提是需要了解图像的基本原理.常规的图像格式分为矢量图和位 ...

  5. NLP中的对抗样本

    自然语言处理方面的研究在近几年取得了惊人的进步,深度神经网络模型已经取代了许多传统的方法.但是,当前提出的许多自然语言处理模型并不能够反映文本的多样特征.因此,许多研究者认为应该开辟新的研究方法,特别 ...

  6. Laravel关联模型

    public $timestamps = false;//不存时间 1.多对多关联.如收藏.用户表users,产品表products,收藏中间表user_favorite_products.那么在用户 ...

  7. 【Linux-驱动】RTC设备驱动架构

    在Linux操作系统中,RTC设备驱动的架构如下图所示: RTC设备驱动涉及的文件:class.c.rtc-dev.c : 建立/dev/rtc0设备,同时注册相应的操作函数.interface.c ...

  8. 制作U盘的win7系统安装

    方法一 用iso.需要下载个UltraISO软件安装. 制作64位WIN7系统U盘安装盘方法 首页就有iso下载,有雨林木风等,我下载了系统之家最新的1907 U盘安装win7系统BIOS设置 thi ...

  9. oracle查询表的结构

    SELECT t.table_name,t.column_name,t.data_type||'('||t.data_length||')', t1.comments FROM User_Tab_Co ...

  10. selenium Grid2环境搭建和基本使用

    Selenium Grid简介 利用Selenium Grid可以使主节点(hub)的测试用例在不同主机即分支点(node)运行.可以使一份测试用例在不同环境下(操作系统.浏览器)执行自动化测试.Se ...