专栏文章

题解:SP16248 NCLNE - Clones

SP16248题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mio7oeit
此快照首次捕获于
2025/12/02 14:42
3 个月前
此快照最后确认于
2025/12/02 14:42
3 个月前
查看原文

题目大意

鸣人要进行战斗 nn 秒,第 11 秒时,有 11 个鸣人,接下来每一秒,所有鸣人会先进行分身,从原来的 kk 个鸣人变成 2k2k 个鸣人,分身以后,将会有一部分鸣人前往战斗,战斗的鸣人将不能分身,以此类推。现在给出总战斗时间 nn 与每一秒前往战斗的鸣人数量,问给出的数据是否合法。

题目分析

通过题意可以得出,当 tnt \ne nk<0k < 0,或者 t=nt = nk0k \ne 0 时,数据不合法,上述表达式中 kk 为每一秒部分鸣人去战斗后剩余鸣人数量,tt 为此时时间(秒)。
此题使用模拟即可。

Code&AC记录

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,people,flag,x;
signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		people=flag=1;
		while(n--){
			cin>>x;
			if((people-=x)<0)flag=0;
			people*=2;
		}
		if(flag and !people)cout<<"Yes\n";
		else cout<<"No\n";
	}
	return 0;
}

后记

注意第 1212 行的判断语句:
CPP
if((people-=x)<0)flag=0;
写代码时千万不要将 people-=x 两边的括号去掉,因为 > 的优先级显然高于 -=

评论

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

正在加载评论...