专栏文章
题解:P14101 [ZJCPC 2017] Problem Preparation
P14101题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minqyvfg
- 此快照首次捕获于
- 2025/12/02 06:55 3 个月前
- 此快照最后确认于
- 2025/12/02 06:55 3 个月前
有 道题,每道题有一个难度分数 ,判断是否满足以下 条规则:
数量要求:。 最小难度为 :所有题目中难度最小的值必须等于 。
至少两个难度为 的题:至少有 道题难度为 。
相邻难度差限制:将难度从小到大排序后,相邻两题的难度差 。
特殊的:如果相邻两题中有一题是最难题(最大值),则它们之间的难度差没有限制。题目保证只有一个最难题。
数量要求:。 最小难度为 :所有题目中难度最小的值必须等于 。
至少两个难度为 的题:至少有 道题难度为 。
相邻难度差限制:将难度从小到大排序后,相邻两题的难度差 。
特殊的:如果相邻两题中有一题是最难题(最大值),则它们之间的难度差没有限制。题目保证只有一个最难题。
解题步骤:
- 如果 或 ,输出
No。 - 找出最小值
minx,如果minx != 1,输出No。 - 统计难度为 的题目数量,如果少于 ,输出
No。 - 排序难度数组,从第 个到第 个。如果
s[i+1]不是最大值,s[i]不是最大值,且s[i+1]-s[i] <= 2,否则输出No。 - 全部通过,输出
Yes。
code:
CPP#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int T;
int main(){
cin>>T;
while(T--){
int n;
cin>>n;
int s[N];
for(int i=0;i<n;i++)
cin>>s[i];
if(n<10||n>13){
cout<<"No"<<endl;
continue;
}
int minx=s[0];
for(int i=1;i<n;i++)
minx=min(minx,s[i]);
if(minx!=1){
cout<<"No"<<endl;
continue;
}
int cnt=0;
for(int i=0;i<n;i++)
if(s[i]==1)
cnt++;
if(cnt<2){
cout<<"No"<<endl;
continue;
}
sort(s,s+n);
int maxx=s[n-1];
bool f=true;
for(int i=0;i<n-1;i++)
if(s[i+1]!=maxx&&s[i]!=maxx&&s[i+1]-s[i]>2){
f=false;
break;
}
cout<<(f?"Yes":"No")<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...