CodeForces 360A - Levko and Array Recovery【动规】
题意:一道已知操作求原始数组的题目;
分析:求出每个位置初始时可能的最小值...然后再判断是否合法即可;
疑问之处:为什么a数组初始要给10^9(原始数组的最大范围),而不能是inf?
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf 1000000007
#define maxn 5005
int a[maxn],b[maxn];
int k;
struct elem
{
int t,l,r,m;
} p[maxn];
int n,m;
bool solve()
{
int i,j;
for(i=1;i<=n;i++) a[i]=1000000000;
memset(b,0,sizeof(b));
for(i=1;i<=m;i++)
{
if(p[i].t==1)
{
for(j=p[i].l;j<=p[i].r;j++) b[j]+=p[i].m;
}
else if(p[i].t==2)
{
for(j=p[i].l;j<=p[i].r;j++) a[j]=min(a[j],p[i].m-b[j]);
}
}
memset(b,0,sizeof(b));
for(i=1;i<=m;i++)
{
if(p[i].t==1)
{
for(j=p[i].l;j<=p[i].r;j++) b[j]+=p[i].m;
}
else if(p[i].t==2)
{
k=-inf;
for(j=p[i].l;j<=p[i].r;j++) k=max(k,a[j]+b[j]);
if(k!=p[i].m) return false;
}
}
return true;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
int i;
for(i=1;i<=m;i++)
{
scanf("%d%d%d%d",&p[i].t,&p[i].l,&p[i].r,&p[i].m);
}
bool flag;
flag=solve();
if(!flag) printf("NO");
else
{
printf("YES\n");
for(i=1;i<=n;i++) i==1?printf("%d",a[i]):printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
CodeForces 360A - Levko and Array Recovery【动规】相关推荐
- CodeForces 360A - Levko and Array Recovery (模拟)
题目地址:点击打开链接 思路: 维护每个数的上下界,先按照操作倒着求一遍,可以得到每个数的上界,再按操作正着验证一遍是否能够满足.如果都能满足的话输出上界即可. 代码: #include<ios ...
- CodeForces 360A - Levko and Array Recovery (思维)
题意: 给定一个序列,然后对其进行两种操作 1 L R W 代表从 a[L ] 到a[R] 全部加上W 2 L R W 代表从 a[L] 到 a[R] 中最大值为 W 问是否存在一个序 ...
- CodeForces 360A - Levko and Array Recovery 给出操作求原始数列
题意: 对一个数列有这么两个操作 1.(1,l,r,p)..将区间[l,r]所有数都加上p 2.(2,l,r,m).求出区间[l,r]的最大值为m 现在告诉这么一些操作(<5000个)...问能 ...
- 树形动规_(技能树)
技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...
- 关于数位动规(入门到进阶,难度中档)
数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...
- CF2B The least round way(贪心+动规)
题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...
- CodeForces 1514A Perfectly Imperfect Array
CodeForces 1514A Perfectly Imperfect Array 题意: 给你n个数,是否存在一个数不是平方数 题解: 先开方,转int,判断是否等于平方 代码: #include ...
- 正则表达式匹配(动规)
文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...
- 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)
题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...
最新文章
- border-radius
- backreference Oracle正則表達式中的反向引用
- java求s a aa aaa_Java求s=a+aa+aaa+aaaa+aa...a的值
- 开源组件ExcelReport 3.x.x 使用手册(为.netcore而来
- 小熊派折叠开发板Docker编译烧录安装HAP
- 【Flink】Flink Elasticsearch client is not connected to any Elasticsearch nodes
- mysql 导出所有表_Mysql导出(多张表)表结构及表数据 mysqldump用法
- 【Node】—nrm的简单使用
- 13数据库表空间回收
- 怎么将文档存在计算机中,电脑中如何将多个文本文档内容合并在一个文本文档中...
- 微型计算机原理与接口技术第六版,微型计算机原理与接口技术(第6版)
- 苹果手机上编辑html文件夹,苹果手机可以编辑EXCEL文件吗
- 激荡三十年:1978-2008 之序
- 明日之后在同一个服务器找不到人,明日之后怎么跨区加好友 看这里
- 怪兽融合、神秘药水?《Monster Tamer》深度攻略,来不及解释快上车!
- 【微服务架构 - 04 - Nexus】01 基于 Docker 安装 Nexus
- vs code 插件change-case, 修改变量名 驼峰和常量等
- umi 如何配置webpack_umi+dva开发环境+经常使用配置和webpack配置
- python公园售票小程序(身份证获取简单信息+简单数据分析+简单多线程)
- 电脑生成siri语音_给电脑里装个Siri!海尔智能语音系统体验