题意:一道已知操作求原始数组的题目;

分析:求出每个位置初始时可能的最小值...然后再判断是否合法即可;

疑问之处:为什么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【动规】相关推荐

  1. CodeForces 360A - Levko and Array Recovery (模拟)

    题目地址:点击打开链接 思路: 维护每个数的上下界,先按照操作倒着求一遍,可以得到每个数的上界,再按操作正着验证一遍是否能够满足.如果都能满足的话输出上界即可. 代码: #include<ios ...

  2. CodeForces 360A - Levko and Array Recovery (思维)

    题意: 给定一个序列,然后对其进行两种操作 1   L R W   代表从 a[L ] 到a[R] 全部加上W 2   L R W  代表从  a[L] 到 a[R] 中最大值为 W 问是否存在一个序 ...

  3. CodeForces 360A - Levko and Array Recovery 给出操作求原始数列

    题意: 对一个数列有这么两个操作 1.(1,l,r,p)..将区间[l,r]所有数都加上p 2.(2,l,r,m).求出区间[l,r]的最大值为m 现在告诉这么一些操作(<5000个)...问能 ...

  4. 树形动规_(技能树)

    技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...

  5. 关于数位动规(入门到进阶,难度中档)

    数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...

  6. CF2B The least round way(贪心+动规)

    题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...

  7. CodeForces 1514A Perfectly Imperfect Array

    CodeForces 1514A Perfectly Imperfect Array 题意: 给你n个数,是否存在一个数不是平方数 题解: 先开方,转int,判断是否等于平方 代码: #include ...

  8. 正则表达式匹配(动规)

    文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...

  9. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

最新文章

  1. border-radius
  2. backreference Oracle正則表達式中的反向引用
  3. java求s a aa aaa_Java求s=a+aa+aaa+aaaa+aa...a的值
  4. 开源组件ExcelReport 3.x.x 使用手册(为.netcore而来
  5. 小熊派折叠开发板Docker编译烧录安装HAP
  6. 【Flink】Flink Elasticsearch client is not connected to any Elasticsearch nodes
  7. mysql 导出所有表_Mysql导出(多张表)表结构及表数据 mysqldump用法
  8. 【Node】—nrm的简单使用
  9. 13数据库表空间回收
  10. 怎么将文档存在计算机中,电脑中如何将多个文本文档内容合并在一个文本文档中...
  11. 微型计算机原理与接口技术第六版,微型计算机原理与接口技术(第6版)
  12. 苹果手机上编辑html文件夹,苹果手机可以编辑EXCEL文件吗
  13. 激荡三十年:1978-2008 之序
  14. 明日之后在同一个服务器找不到人,明日之后怎么跨区加好友 看这里
  15. 怪兽融合、神秘药水?《Monster Tamer》深度攻略,来不及解释快上车!
  16. 【微服务架构 - 04 - Nexus】01 基于 Docker 安装 Nexus
  17. vs code 插件change-case, 修改变量名 驼峰和常量等
  18. umi 如何配置webpack_umi+dva开发环境+经常使用配置和webpack配置
  19. python公园售票小程序(身份证获取简单信息+简单数据分析+简单多线程)
  20. 电脑生成siri语音_给电脑里装个Siri!海尔智能语音系统体验

热门文章

  1. oracle any workload,oracle 11g dbms_workload_repository手工管理AWR快照,基线
  2. 美甲店适合的会员管理系统
  3. linux 主机配置检查-3(linux查看补丁)
  4. 明景“视频结构化大数据分析”
  5. QT程序图标和窗口图标
  6. 魅族新机性价比超小米8SE?都是为了活着
  7. R语言画图之——expression
  8. 美团面试官:为什么不建议把数据库部署在Docker容器内?
  9. 软件质量管理的西药与中药
  10. 简单介绍 RPC 框架