关于难得一遇div3的B都没做出来的反思
看清题!看清题!看清题!
我的思路是所有输入的数依次大减小,所得 剩余 > 1 即为肯定要连续吃同一种才能吃完
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{ int n;
cin >> n;
while(n --)
{ LL k , xmax ,xmin;
int flag = 0;
cin >> k;
cin >> xmax;
if(k == 1&&xmax == 1) flag = 1;
for(int i = 0;i < k - 1;i ++)
{
cin >> xmin;
if(xmin > xmax) swap(xmin , xmax);
xmax -= xmin;
}
if(xmax <= 1) flag = 1;
if(flag) cout << "Yes" <<endl;
else cout << "No" <<endl;
}
return 0;
}
但是!题上是{2 , 2} - > {1 , 2} -> {1 , 1 } -> {0 , 1} -> {0 , 0} 的次序
当出现 4
4 2 1 1 的时候
我的思路判断是
4 2 1 1
------------------
1 2
3 4
5 6
7 8 是跟题目判定方式和结果不一样的
所以只判断最大和次大的才是 √ 的
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{ int n;
cin >> n;
while(n --)
{ int mx = 0, nmx = 0;
int k;
cin >> k;
for (int i = 0; i < k; i++) {
int x;
cin >> x;
if (x > mx) {
nmx = mx;
mx = x;
} else if (x > nmx) {
nmx = x;
}
}
if (mx - nmx > 1) {
cout << "No\n";
} else {
cout << "Yes\n";
}
}
return 0;
}
就这一道简单思维题给我大半夜wa破防了,果然菜是原罪QAQ