https://codeforces.com/contest/1474/problem/D

先考虑不能变的情况,由于a[1]要被删光,那么一定是a[1]-=a[1],a[2]-=a[1],依次类推b[i]=a[i]-b[i-1],能消除的充要条件是所有b[i]>=0且b[n]=0

然后我们考虑枚举每一个相邻位置看可不可行,我们发现相邻位置变化对于奇数i的b[i]和偶数i的b[i]的改变是一样的

那么就只要看一下1-i-1这段b[i]是不是都大于0,再看看i-n这段区间的奇数小标的最小值和偶数下标的最小值变化后是否是>=0的,然后再看看b[n]的变化是否会变成0就可以了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxl=3e5+10;int n,m,k,cnt,tot,cas,ans;
ll a[maxl],b[maxl];
ll mi[21][2][maxl];
bool vis[maxl];
char s[maxl];inline void prework()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);b[i]=a[i]-b[i-1];}for(int i=1;i<=n;i++)mi[0][i&1][i]=mi[0][i&1][i-1]=mi[0][i&1][i+1]=b[i];for(int k=1;k<=20;k++)for(int d=0;d<=1;d++)for(int i=1;i<=n;i++)mi[k][d][i]=min(mi[k-1][d][i],mi[k-1][d][i+(1<<(k-1))]);
}inline ll getmi(int l,int r,int d)
{int k=log2(r-l+1);return min(mi[k][d][l],mi[k][d][r-(1<<k)+1]);
}inline void mainwork()
{ans=0;if(getmi(1,n,0)>=0 && getmi(1,n,1)>=0 && b[n]==0){ans=1;return;}for(int i=1;i<=n-1;i++){bool flag=true;if(i-1>0 && getmi(1,i-1,(i-1)&1)<0)flag=false;if(i-2>0 && getmi(1,i-2,(i-2)&1)<0)flag=false;if(b[i]-a[i]+a[i+1]<0)flag=false;if(i+2<=n && getmi(i+2,n,i&1)+2*a[i+1]-2*a[i]<0)flag=false;if(getmi(i+1,n,(i+1)&1)+2*a[i]-2*a[i+1]<0)flag=false;if((i&1)==(n&1) && b[n]+2*a[i+1]-2*a[i]!=0)flag=false;if((i&1)!=(n&1) && b[n]+2*a[i]-2*a[i+1]!=0)flag=false;if(flag){ans=1;return;}}
}inline void print()
{puts(ans?"YES":"NO");
}int main()
{int t=1;scanf("%d",&t);for(cas=1;cas<=t;cas++){prework();mainwork();print();}return 0;
}

codeforces1474D. Cleaning相关推荐

  1. 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...

  2. 动态规划 BZOJ1584 [Usaco2009 Mar] Cleaning Up 打扫卫生

    1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 511  Solved: 3 ...

  3. cleaning selected projects has encountered a problem errors occurred during build

    clean 项目的时候出现的问题. cleaning selected projects has encountered a problem errors occurred during build ...

  4. Linux mount: Structure needs cleaning 错误解决方法

    "mount: Structure needs cleaning"报错 可以使用xfs_repair来修复,但是要注意 xfs_repair修复的分区中的文件都会丢失,即使是du能 ...

  5. CF611F. New Year and Cleaning

    CF611F. New Year and Cleaning Solution 还挺巧妙的套路. 把起点整体看作一个矩阵,在操作时移出原来矩阵外的部分的起点都是超越边界的,可以直接通过超出的面积计算贡献 ...

  6. CF1245F Daniel and Spring Cleaning(等会了更新)

    CF1245F Daniel and Spring Cleaning 题意: 给定l,r,求∑a=lr∑b=lr[a+b=a⊕b]\sum_{a=l}^{r}\sum_{b=l}^{r}[a+b=a⊕ ...

  7. 【POJ - 2376】Cleaning Shifts (贪心)

    题干: Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores ...

  8. poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)

    3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 462  Solved ...

  9. bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 941  Solved ...

最新文章

  1. 依图创始人朱珑《人民日报》刊文:未来10年是人工智能算力的“超摩尔时代”...
  2. AI安防崛起迅速 开疆拓土少不了专利作“盔甲”
  3. Python-各种结构解析以及生成器(列表解析,字典解析,集合解析,元组构成的生成器)
  4. 同一个页面两个aside标签ID重复问题导致的功能缺失
  5. 前端学习(2710):重读vue电商网站30之左侧菜单栏图标设计
  6. 算法(16)-leetcode-explore-learn-数据结构-二叉树总结
  7. 计算机网络系统由什么系统组成,从资源构成上看计算机网络系统由什么构成
  8. matlab语句跳转,matlab编程 跳转语句
  9. hyperledger fabric超级账本java sdk样例e2e代码流程分析
  10. python学习(六)----文件和异常
  11. si4438 的初始化
  12. dB、dBFS、dBV、dBu...都是啥啊..
  13. xpath提取招标网站的项目编号
  14. 网络推销经典案例——所有的骗子都应该向他学习
  15. # Logistic regression中的threshold
  16. abaqus中六面体单元对比四面体
  17. python 有放回随机抽取_Python 随机抽样
  18. 安装g++时出现的一种报错及解决方案
  19. python牛顿法求方程的根_python计算方程式根的方法 如何用python计算三元方程
  20. mysql8对gis的支持

热门文章

  1. 计算机专业的理想作文100字,我的理想作文100字六篇
  2. js:fetch在浏览器中发送 HTTP 请求
  3. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法
  4. 陕师大的经济学类和计算机类,2018年陕师大专业录取分数分析
  5. Ms08067 腊八节浓情腊八粥温暖安全人主题活动
  6. 辛德勒的救赎——再谈辛德勒名单
  7. 【FFmpeg】学会添加水印,只要这一篇就足够
  8. 别去冼牙了!惊人发現牙齿「再生朮」,韩國变态黑科技,烂牙变新牙!
  9. 写给小白的开源编译器
  10. xc7z100 linux移植,Xilinx Zynq7000系列XC7Z035/XC7Z045/XC7Z100