题解:P10852 【MX-X2-T1】「Cfz Round 4」Awaken
这个一道可癌的数学题。
思路
考虑题目中的等式
那么我们只需要判断这个序列在满足题目给出的特定位置上是特定值的条件的情况下是否可以是等差序列即可。
时间复杂度
Code
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
struct node{
int p,x;
} dat[N];
int Q,n,m;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> Q;
while(Q --){
cin >> n >> m;
for(int i = 1;i <= m;i ++){
cin >> dat[i].p >> dat[i].x;
}
if(m <= 1){
cout << "Yes\n";
continue;
}
sort(dat + 1,dat + m + 1,[](node a,node b){
return a.p < b.p;
});
int x = (dat[2].x - dat[1].x) / (dat[2].p - dat[1].p);
bool flag = true;
for(int i = 2;i <= m;i ++){
if(dat[i].x - dat[i - 1].x != x * (dat[i].p - dat[i - 1].p)){
flag = false;
break;
}
}
cout << (flag == true ? "Yes\n" : "No\n");
}
return 0;
}