T4
2024-12-11 11:02:03
发布于:浙江
4阅读
0回复
0点赞
首先我们需要对进行预处理,求得他在一个星期当中的实际变化数值,通过取 mod 即可得出。
随后可以对其进行升序排列,去除重复项后得到序列。
如果答案为Yes
,那么序列一定满足: 存在一个,使得 mod , 边界值。
我们可以尝试着枚举的取值,若满足即可输出Yes
,否则输出No
。
时间复杂度为:
#include<bits/stdc++.h>
using namespace std;
int A, B, n, x , y;
int a[1000005];
int _Mod(int x){
if(x % (A + B)) return x % (A + B);
else return A + B;
}
int main(){
cin >> n >> A >> B ;
int m = 0 ;
for(int i = 1 ; i <= n ; i ++ ){
cin >> a[i];
a[i] = _Mod(a[i]);
}
sort(a + 1, a + n + 1);
if(a[n] - a[1] + 1 <= A){
cout << "Yes" << endl;
return 0;
}
for(int i = 2 ; i <= n ; i ++ ){
if(a[i] - a[i - 1] - 1 >= B){
cout << "Yes" << endl;
return 0;
}
}
cout << "No" << endl;
return 0;
}
这里空空如也
有帮助,赞一个