codeforces 1443 problem D
题目链接
题目大意:给你一个长度为n序列,你可以进行无数次操作,让前k个数减一或让后k个数减一,1<=k<=n,问是否能把这整个序列变为0序列,
(我是傻逼,没有初始化,太菜了,比赛的时候没有做出来QAQ )
写题时要找好清晰的思路
8
252 210 750 818 640 868 700 777
首先可以确定,如果一个数能被减小,他能减少的数值一定不会超过他之前能被减少的数值
比如上面那个例子,750绝对不可能变成比540还小的数,如果继续变的话第二个数就会变成负数
第二,他被减完后的数一定是要大于前面的数的,不然从后往前减的时候,前面那个数就不会变成0
比如818->608之后,640->430,在从后往前筛时608这个数是一定不能变为0的,所以640只能变为608
所以我们发现接下来的数最多也就只能减32的所以能被减的数是不断变小的
如果经过从前往后筛和从后往前筛都不能让这个序列变为0,那么这个序列就是不好的,否则就是好的


#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
const int maxn=2e6+10;
#define inf 9999969
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define fep(i,a,b) for(int i=b;i>=a;--i)
#define scf(x) scanf("%lld",&x)
#define prf(x) printf("%lld\n",x)
#define deprf(x) printf("[%lld]\n",x)
#define mymset(x,y) memset(x,y,sizeof(x))
const int mod=9901;
using namespace std;
ll a[maxn];
int main()
{ll t,n;scf(t);while(t--){scf(n);rep(i,1,n)scf(a[i]);ll lala=a[1];//这个lala存的是改变前和改变后的最小差值  a[0]=0,a[n+1]=0;rep(i,1,n){ll p=a[i];if(a[i])a[i]=max(max(0LL,min(a[i-1],a[i])),a[i]-lala);//改变后不能超过前面的数//且不能小于0else break;                                    //如果能减最大只能减前面的最小差值if(p==a[i])break;//如果这个数没有发生改变证明接下来的数也就不能被减了lala=min(lala,p-a[i]);//更新最小差值}lala=a[n];fep(i,1,n)//从后往前跟从前往后是一样的{ll  p=a[i];if(a[i])a[i]=max(max(0LL,min(a[i+1],a[i])),a[i]-lala);else break;if(p==a[i])break;lala=min(lala,p-a[i]);}int f=0;//答案标记rep(i,1,n)if(a[i])f=1;//查看是否有数不为0if(f)printf("NO\n");else printf("YES\n");}return 0;
}

div2 D. Extreme Subtraction相关推荐

  1. Extreme Subtraction

    题意: 每次可以将前缀减1或者后缀减1,问是否存在一种方法使得全部构成0. 思路: 构建差分序列,然后操作就可以变成将d[1]-1 d[X],X ϵ \epsilon ϵ(2,n+1)加上1 另外一种 ...

  2. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)

    今天看不下去数电vp一场div2,搞A搞了很长时间,导致后面没有时间写,不过今天补题的时候全是独立补出来的没有看题解 vp3题,补3题 A - Kids Seating 最开始想的是与质数有关,乱七八 ...

  3. #423 Div2 D

    #423 Div2 D 题意 构造一个 n 个节点的树,恰好有 k 个叶子节点 (叶子节点的定义是只与树上的某一个节点存在连边),要求任意两个叶子节点的距离的最大值最小,距离为两个节点间边的数量,输出 ...

  4. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  5. Extreme 交换机基础配置命令

    之前有写过关于这方面的总结,但觉得不够全面,所以今天在网上摘抄一部份,结合自己所写的,一并贴上来,方便自己日后查看! 1.用户名和密码配置 create account [admin | user] ...

  6. waves服务器系统盘,Waves 新款小巧化 SoundGrid 服务器 Server One-C 和 Extreme Server-C 公开...

    继超便携的SoundGrid Mobile Server服务器之后,Waves新款机架版Server One-C和Extreme Server-C服务器也终于在官网上可以看到了. 产品名中的" ...

  7. Extreme交换机基础配置命令

    1.用户名和密码配置 create account [admin | user] <username> {encrypted} {<password>} configure a ...

  8. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  9. 【UWB】ELM,Extreme Learning Machine 极限学习机

    文章目录 例子 1 例子 2 Ref. 例子 1 % 任务2: ELM 网络 % Date: 2021-10-15 % Author: Zhao-Jichao clear clc%% 训练 % 导入数 ...

最新文章

  1. 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢...
  2. 1148 Werewolf - Simple Version 甲级
  3. admin.php wordpress,wordpress 中使用自带 admin-ajax.php
  4. 中国科学院计算机网络信息中心领导,中国科学院计算机网络信息中心
  5. js方法的使用(z)
  6. eclipse 中配置外部 tomcat 的debug
  7. mysql --force 无效_【技能库】--mysql 索引失效 force index也失效-- 原因解决方案(256)...
  8. oracle游标作为out参数,oracle 存储过程 带游标作为OUT参数输出
  9. 手机内置摄像头接线图解_1000以下手机哪款好?8款千元以内性价比最高的手机推荐...
  10. unity人物动画配置
  11. catia二次开发:IDE界面介绍
  12. matlab符号函数绘图法_MATLAB符号运算实验
  13. python用四个圆画成花_秘籍:学画牡丹技法要领,不轻易外传...
  14. pyecharts世界地图用:国家中英文对照表
  15. 20211003:数字滤波器前置知识,sinc函数与Sa函数
  16. 回溯法采用的搜索策略_下列那种函数是回溯法中为避免无效搜索采取的策略( )_学小易找答案...
  17. Parallel HDF5 简介
  18. Android 知识点 108 —— PowerManagerService
  19. 神经网络入门教程,现代神经网络教程
  20. 可编程交换机P4网络资源

热门文章

  1. android radiobutton 点击效果,Android RadioButton 的点击效果
  2. android tablelayout用法,TableLayout布局的使用和详解
  3. 中国小麦淀粉市场需求前景分析及投资策略研究报告2022-2028年
  4. caoz的梦呓:信息安全攻防杂谈
  5. dedecms标签一 : 首页模板常用标签
  6. 一句话概括Comparator接口实现原理
  7. SRv6网络编程:开启IP网络新时代 | 一文读懂SRv6 Policy
  8. 换了编译环境/电脑 keil提示编译错误—>修改编译路径
  9. Python程序员辞职后,如何踏出自由职业的第一步,聊聊我自己的看法
  10. 进程和线程的区别及python多进程、多线程实现