社区讨论
这道题能够随机吗?
P2757[国家集训队] 等差子序列参与者 5已保存回复 29
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 29 条
- 当前快照
- 1 份
- 快照标识符
- @mi7wj2uc
- 此快照首次捕获于
- 2025/11/21 04:46 4 个月前
- 此快照最后确认于
- 2025/11/21 06:48 4 个月前
大体思路:随机选两个点,找到第三个点使得这三个点在同一条直线上.
同学觉得思路没有问题,代码样例也过了,提交0分..
CPP#include<bits/stdc++.h>
using namespace std;
int T,a[10005],n;
bool jug;
template<class T>
inline T read(T & x) {
char tt = getchar();
int i=1;
while(!isdigit(tt))if(tt=='-')i*=-1;
do {
x=(x<<3)+(x<<1)+tt-'0',tt=getchar();
} while(isdigit(tt));
return x*=i;
}
template<class T>
istream & operator >> (istream & IN,T & inn) {
return read(inn);
}
void sa() {
int tim=1000000;
while(tim--) {
int y=rand()%(n-1)+1,x=rand()%y;
int deltay=a[y]-a[x],deltax=y-x;
for(register int i=0; i<n; i++) {
if((deltay*(i-x))==(deltax*(a[i]-a[x]))) {
if((i==x)||i==y)continue;
else {
jug=true;
return;
}
}
}
}
}
int main() {
srand(20040519);
cin>>T;
while(T--) {
cin>>n;
jug=false;
for(register int i=0; i<n; i++)cin>>a[i];
sa();
cout<< (jug ? "Y\n":"N\n");
}
}
求大佬差错!
回复
共 29 条回复,欢迎继续交流。
正在加载回复...