【CF1187C】Vasya And Array
题目大意:给定一个长度为 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的更多相关文章
- 【02】[].slice和Array.prototype.slice
[02][].slice和Array.prototype.slice 01,Array是一个构造函数.浏览器内置的特殊对象. 02,Array没有slice方法. 03,Array.prototy ...
- 【LeetCode】659. Split Array into Consecutive Subsequences 解题报告(Python)
[LeetCode]659. Split Array into Consecutive Subsequences 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id ...
- 【CF493E】【数学】Vasya and Polynomial
Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...
- 【leetcode81】Product of Array Except Self
题目描述: 给定一个长度为n的整数数组Array[],输出一个等长的数组result[],这个输出数组,对应位置i是除了Array[i]之外,其他的所有元素的乘积 例如: given [1,2,3,4 ...
- 【leetcode】905. Sort Array By Parity
题目如下: 解题思路:本题和[leetcode]75. Sort Colors类似,但是没有要求在输入数组本身修改,所以难度降低了.引入一个新的数组,然后遍历输入数组,如果数组元素是是偶数,插入到新数 ...
- 【leetcode】Merge Sorted Array
题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assu ...
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- 【Codeforces718C】Sasha and Array 线段树 + 矩阵乘法
C. Sasha and Array time limit per test:5 seconds memory limit per test:256 megabytes input:standard ...
- 【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 ...
随机推荐
- 【.NET】关于.NET前后台提示框的那点事
前言 关于提示框,或多或少都用到过,提示框常见方式两种:js原生alert() 和 div模拟弹层:下面以一个常见的需求业务场景来展现提示框的那点事: 正文内容 客户:需求方: 小白:实现方(全权负责 ...
- Python基础知识(程序结构)
流程控制语句 选择语句.条件表达式.循环语句.跳转语句.pass空语句 程序结构三种基本结构 顺序结构.选择结构.循环结构 顺序结构 按照代码顺序依次运行 选择结构 根据条件表达式结果选择执行不同的语 ...
- Linux 使用中history 默认记录数不够用了?
1.默认情况下,系统能保存1000条的历史命令. #echo $HISTSIZE 2.那么1000条不够用,该怎么办呢? #vi /etc/profile 修改HISTSIZE=1000 > ...
- 面试题 :10亿url去重只给4G内存
我能想到的有以下几种: 用语言判断去重,ex表格去重,数据库去重,文件名字去重, 有人说:10亿url ex表放不下!! 可以用树和折半的思想将10亿url,变成单元最小化的树,然后用ex表去重 ex ...
- PTA(Basic Level)1047.编程团体赛
编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...
- 【转帖】2018全球公有云IaaS榜单出炉:阿里、腾讯、中国电信、金山云列前十
2018全球公有云IaaS榜单出炉:阿里.腾讯.中国电信.金山云列前十 https://news.cnblogs.com/n/628391/ 中国电信貌似就是用的华为的技术 阿里 腾讯 华为 金山 百 ...
- python判断一个数是不是完全平方数
思路: 完全平方数开根号后是一个整数,非完全平方数开根号的话是一个非整数 开根号后取整,如果开根号后是整数的话就不会改变值的大小 取整后再平方,如果值和之前一样,说明是完全平方数 import mat ...
- python装饰器的原理
装饰器的原理就是利用<闭包函数>来实现,闭包函数的原理就是包含内层函数的return和外层环境变量:
- 前端-CSS-更改标签样式-长宽字体-背景-边框-显示方式-定位-透明度-扩展点-02
目录 控制标签元素样式 长宽属性.字体属性.文本对齐.文本装饰.首行缩进 背景属性.边框属性.圆角 display 显示方式 盒子模型 margin.padding... float浮动 overfl ...
- 用纯 CSS 创作一个在容器中反弹的小球
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/jKVbyE 可交互视频教 ...