题目链接:http://codeforces.com/contest/361/problem/C

题意:对一个数列有这么两个操作

1、(1,l,r,p)..将区间[l,r]所有数都加上p

2、(2,l,r,m).求出区间[l,r]的最大值为m

现在告诉这么一些操作(<5000个),问能否找到一个原始的数列,有则输出YES与这个数列,否则输出NO,答案可能不唯一输出任何合法的都行。

题解:先给数组赋予最大的初值然后倒着处理,遇到1就减去。如果是2,将这一区间里所有数都去min(自身,MAX)

处理完之后然后正着来看一下是不是符合条件。由于数据比较小直接暴力也行。

#include <iostream>
#include <cstring>
#include <cstdio>
#define inf 0X3f3f3f3f
using namespace std;
typedef long long ll;
const int M = 5e3 + 10;
struct TnT {
int t , l , r , w;
}T[M];
ll a[M] , b[M];
int main() {
int n , m;
scanf("%d%d" , &n , &m);
for(int i = 0 ; i < m ; i++) {
scanf("%d%d%d%d" , &T[i].t , &T[i].l , &T[i].r , &T[i].w);
}
for(int i = 1 ; i <= n ; i++) {
a[i] = 25 * 100000000000;
}
int flag = 0;
for(int i = m - 1 ; i >= 0 ; i--) {
if(T[i].t == 1) {
for(int j = T[i].l ; j <= T[i].r ; j++) {
a[j] -= T[i].w;
}
}
else {
for(int j = T[i].l ; j <= T[i].r ; j++) {
a[j] = min(a[j] , (ll)T[i].w);
}
}
}
for(int i = 1 ; i <= n ; i++) {
b[i] = a[i];
}
for(int i = 0 ; i < m ; i++) {
if(T[i].t == 1) {
for(int j = T[i].l ; j <= T[i].r ; j++) {
b[j] += T[i].w;
}
}
else {
int count = 0;
for(int j = T[i].l ; j <= T[i].r ; j++) {
if(b[j] > T[i].w) {
flag = 1;
break;
}
if(b[j] == T[i].w) count++;
}
if(!count) {
flag = 1;
break;
}
}
if(flag) break;
}
if(flag) printf("NO\n");
else {
printf("YES\n");
for(int i = 1 ; i <= n ; i++) {
a[i] = min((ll)1000000000 , a[i]);
a[i] = max((ll)-1000000000 , a[i]);
printf("%I64d " , a[i]);
}
printf("\n");
}
return 0;
}

最新文章

  1. javascript 设计模式-----单例模式
  2. ios界面布局整理
  3. mybatis中使用使用模块化sql
  4. lamp环境编译(实际通过)
  5. SQL Server 高性能写入的一些总结(转)
  6. HDU1009 FatMouse&#39; Trade
  7. 使用 pm2 来守护 NoderCMS
  8. 《windows程序设计》学习_2.1:初识消息
  9. react 学习与使用记录
  10. 内置函数值 -- chr() ord() -- 字符和ascii的转换
  11. 【原创】大数据基础之Logstash(3)应用之file解析(grok/ruby/kv)
  12. Android Studio 3依赖配置
  13. Android 使用View绘制文字(DrawText)技术总结
  14. [Caffe]:关于*** Aborted at 1479432790 (unix time) try &quot;date -d @1479432790&quot; 错误的另一种原因
  15. SoapUI利用Groovy对response与断言的处理
  16. VVeboImageView
  17. 混沌数学之Henon吸引子
  18. js获取当前日期(年月日格式)
  19. angular-ui-select (系列二)远程搜索,页面方框显示的值跟传给后台的值不一样解决方案
  20. #define和const的区别

热门文章

  1. 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)
  2. 作为前端的你,CC游戏开发可以上车
  3. 夯实Java基础(六)——包装类
  4. 【Java例题】3.2字符图形
  5. [Spring cloud 一步步实现广告系统] 16. 增量索引实现以及投送数据到MQ(kafka)
  6. 牛客多校训练第八场C.CDMA(思维+构造)
  7. 【java提高】(17)---Java 位运算符
  8. (2019版本可用)【idea的安装,激活,设置,卸载】
  9. 【I&#39;m Telling the Truth】【HDU - 3729】 【匈牙利算法,DFS】
  10. Django Mysql数据库-F查询和Q查询