codeforces1474D. Cleaning
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相关推荐
- 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...
- 动态规划 BZOJ1584 [Usaco2009 Mar] Cleaning Up 打扫卫生
1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 511 Solved: 3 ...
- cleaning selected projects has encountered a problem errors occurred during build
clean 项目的时候出现的问题. cleaning selected projects has encountered a problem errors occurred during build ...
- Linux mount: Structure needs cleaning 错误解决方法
"mount: Structure needs cleaning"报错 可以使用xfs_repair来修复,但是要注意 xfs_repair修复的分区中的文件都会丢失,即使是du能 ...
- CF611F. New Year and Cleaning
CF611F. New Year and Cleaning Solution 还挺巧妙的套路. 把起点整体看作一个矩阵,在操作时移出原来矩阵外的部分的起点都是超越边界的,可以直接通过超出的面积计算贡献 ...
- 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⊕ ...
- 【POJ - 2376】Cleaning Shifts (贪心)
题干: Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores ...
- poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 462 Solved ...
- bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 941 Solved ...
最新文章
- 依图创始人朱珑《人民日报》刊文:未来10年是人工智能算力的“超摩尔时代”...
- AI安防崛起迅速 开疆拓土少不了专利作“盔甲”
- Python-各种结构解析以及生成器(列表解析,字典解析,集合解析,元组构成的生成器)
- 同一个页面两个aside标签ID重复问题导致的功能缺失
- 前端学习(2710):重读vue电商网站30之左侧菜单栏图标设计
- 算法(16)-leetcode-explore-learn-数据结构-二叉树总结
- 计算机网络系统由什么系统组成,从资源构成上看计算机网络系统由什么构成
- matlab语句跳转,matlab编程 跳转语句
- hyperledger fabric超级账本java sdk样例e2e代码流程分析
- python学习(六)----文件和异常
- si4438 的初始化
- dB、dBFS、dBV、dBu...都是啥啊..
- xpath提取招标网站的项目编号
- 网络推销经典案例——所有的骗子都应该向他学习
- # Logistic regression中的threshold
- abaqus中六面体单元对比四面体
- python 有放回随机抽取_Python 随机抽样
- 安装g++时出现的一种报错及解决方案
- python牛顿法求方程的根_python计算方程式根的方法 如何用python计算三元方程
- mysql8对gis的支持
热门文章
- 计算机专业的理想作文100字,我的理想作文100字六篇
- js:fetch在浏览器中发送 HTTP 请求
- 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法
- 陕师大的经济学类和计算机类,2018年陕师大专业录取分数分析
- Ms08067 腊八节浓情腊八粥温暖安全人主题活动
- 辛德勒的救赎——再谈辛德勒名单
- 【FFmpeg】学会添加水印,只要这一篇就足够
- 别去冼牙了!惊人发現牙齿「再生朮」,韩國变态黑科技,烂牙变新牙!
- 写给小白的开源编译器
- xc7z100 linux移植,Xilinx Zynq7000系列XC7Z035/XC7Z045/XC7Z100