CodeForces 360A - Levko and Array Recovery (思维)
题意:
给定一个序列,然后对其进行两种操作
1 L R W 代表从 a[L ] 到a[R] 全部加上W
2 L R W 代表从 a[L] 到 a[R] 中最大值为 W
问是否存在一个序灭满足上序操作 , 操作数量小于5000
题解:
从尾往前跑 , 维护序列每个值可存在的最大权值, 然后再从头往后跑,查询该序列是否满足要求
代码:
#include<stdio.h>
#define INF 1000000000
struct Node
{
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] = INF;
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] != INF)
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 = -INF;
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("NO\n"); continue;}
else printf("YES\n");
for(int i = 1; i <= n; i++)
printf("%d ", Mark2[i]);
printf("\n");
}
}
CodeForces 360A - Levko and Array Recovery (思维)相关推荐
- CodeForces 360A - Levko and Array Recovery (模拟)
题目地址:点击打开链接 思路: 维护每个数的上下界,先按照操作倒着求一遍,可以得到每个数的上界,再按操作正着验证一遍是否能够满足.如果都能满足的话输出上界即可. 代码: #include<ios ...
- CodeForces 360A - Levko and Array Recovery【动规】
题意:一道已知操作求原始数组的题目: 分析:求出每个位置初始时可能的最小值...然后再判断是否合法即可: 疑问之处:为什么a数组初始要给10^9(原始数组的最大范围),而不能是inf? AC代码: # ...
- CodeForces 360A - Levko and Array Recovery 给出操作求原始数列
题意: 对一个数列有这么两个操作 1.(1,l,r,p)..将区间[l,r]所有数都加上p 2.(2,l,r,m).求出区间[l,r]的最大值为m 现在告诉这么一些操作(<5000个)...问能 ...
- CodeForces 1514A Perfectly Imperfect Array
CodeForces 1514A Perfectly Imperfect Array 题意: 给你n个数,是否存在一个数不是平方数 题解: 先开方,转int,判断是否等于平方 代码: #include ...
- 【CodeForces - 361D】Levko and Array (二分,dp)
题干: Levko has an array that consists of integers: a1, a2, ... , an. But he doesn't like this array a ...
- codeforces 361 D. Levko and Array(dp+二分)
题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之 ...
- Educational Codeforces Round 11A. Co-prime Array 数学
地址:http://codeforces.com/contest/660/problem/A 题目: A. Co-prime Array time limit per test 1 second me ...
- CodeForces - 1480D2 Painting the Array II(dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求拆分成两个子序列,使得两个子序列的贡献之和最 小.对于一个序列的贡献就是,去掉相邻且相同的字母后的长度,即 ∑i=1n[a[i]! ...
- CodeForces - 1480D1 Painting the Array I(贪心)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求拆分成两个子序列,使得两个子序列的贡献之和最 大.对于一个序列的贡献就是,去掉相邻且相同的字母后的长度,即 ∑i=1n[a[i]! ...
最新文章
- 智能指针shared_ptr的用法
- 【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
- 【SQLAlchemy】PostgreSQL的自增长主键定义
- leetcode 153. Find Minimum in Rotated Sorted Array | 153. 寻找旋转排序数组中的最小值(二分查找)
- 外星人台式电脑_执掌游戏世界 外星人ALIENWARE m15丨17.9mm机身轻悍降临【电脑组装】公众号分享台式机笔记本电脑 京东商城特惠通道...
- 获取js里添加的css文件,用JS添加一个css文件
- socket编程开发
- GIT提交记录和Revert commit过程分析
- 实现在Android 多点手势识别
- android ndk 多线程mk,Android NDK 开发教程六: application.mk
- 蓝桥杯2019年第十届C/C++省赛A组第二题-数列求值
- relative定位下要使用top、left,而不是margin-top、margin-left
- C语言中钩子函数使用讲解
- 多电量变送器在消防巡检设备中的应用
- Linux文件编程常用函数详解——read()和write()函数
- 在美团投放广告的优势、展现形式介绍!
- hls简述(HTTP live Streaming)
- springboot+vue企业人事人力资源管理系统java公司员工出差考勤办公OA系统
- 大数据分析案例-基于决策树算法构建银行客户流失预测模型
- 安卓开发-Activity的显示意图和隐式意图+实例+Activity界面间数据的传递实例