专栏文章

P14524 [BYOI R1] 意识解离 题解

P14524题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@min6nio4
此快照首次捕获于
2025/12/01 21:26
3 个月前
此快照最后确认于
2025/12/01 21:26
3 个月前
查看原文

P14524 [BYOI R1] 意识解离

题目翻译

判断一个非负整数序列每项是否可以拆成任意个任意长度在结尾处对齐的正整数序列之和。

思路

先考虑特殊情况,发现当序列中有 00 时,无论如何也不能用正整数表示,可以直接特判。
然后贪心,会发现实现满足要求的操作实际上是将任意一位之后的所有数减一,而无法满足的条件就是在操作过程中,有元素的值小于等于零了。这样就会使前面的数实现递减前,后面的数显到达零从而无法再拆。具体请看代码:

代码

CPP
#include<bits/stdc++.h>
#define Xuanbo return 0
#define int long long
using namespace std;
const int N=1e6+6;
int T;
int n,x;
int a[N];
signed main(){
	for(cin>>T;T;T--){
		cin>>n;
		x=0;
		bool flag=1;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			if(a[i]==0)flag=0;
			if(i==1)continue;
			if(a[i]-x<=0)flag=0;
			if(a[i]>a[i-1])x++;
		}
		if(flag)cout<<"Yes"<<'\n';
		else cout<<"No"<<'\n';
	}
	Xuanbo;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...