社区讨论

这道题能够随机吗?

P2757[国家集训队] 等差子序列参与者 5已保存回复 29

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
29 条
当前快照
1 份
快照标识符
@mi7wj2uc
此快照首次捕获于
2025/11/21 04:46
4 个月前
此快照最后确认于
2025/11/21 06:48
4 个月前
查看原帖
RTRT
大体思路:随机选两个点,找到第三个点使得这三个点在同一条直线上.
同学觉得思路没有问题,代码样例也过了,提交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 条回复,欢迎继续交流。

正在加载回复...