codeforces 361 C. Levko and Array Recovery(暴力+思维)
2024-09-01 06:47:03
题目链接: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;
}
最新文章
- javascript 设计模式-----单例模式
- ios界面布局整理
- mybatis中使用使用模块化sql
- lamp环境编译(实际通过)
- SQL Server 高性能写入的一些总结(转)
- HDU1009 FatMouse&#39; Trade
- 使用 pm2 来守护 NoderCMS
- 《windows程序设计》学习_2.1:初识消息
- react 学习与使用记录
- 内置函数值 -- chr() ord() -- 字符和ascii的转换
- 【原创】大数据基础之Logstash(3)应用之file解析(grok/ruby/kv)
- Android Studio 3依赖配置
- Android 使用View绘制文字(DrawText)技术总结
- [Caffe]:关于*** Aborted at 1479432790 (unix time) try ";date -d @1479432790"; 错误的另一种原因
- SoapUI利用Groovy对response与断言的处理
- VVeboImageView
- 混沌数学之Henon吸引子
- js获取当前日期(年月日格式)
- angular-ui-select (系列二)远程搜索,页面方框显示的值跟传给后台的值不一样解决方案
- #define和const的区别
热门文章
- 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)
- 作为前端的你,CC游戏开发可以上车
- 夯实Java基础(六)——包装类
- 【Java例题】3.2字符图形
- [Spring cloud 一步步实现广告系统] 16. 增量索引实现以及投送数据到MQ(kafka)
- 牛客多校训练第八场C.CDMA(思维+构造)
- 【java提高】(17)---Java 位运算符
- (2019版本可用)【idea的安装,激活,设置,卸载】
- 【I&#39;m Telling the Truth】【HDU - 3729】 【匈牙利算法,DFS】
- Django Mysql数据库-F查询和Q查询