数据可加强
查看原帖
数据可加强
929850
Chenyufeng040525楼主2024/3/16 11:22

以下为最优解之一的代码

//P1142 轰炸
// 
#include<bits/stdc++.h>
using namespace std;
struct d{
	int x,y;
}di[710];
int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>di[i].x>>di[i].y;
	int max=0;
	for(int i=1;i<n;i++){
		int s=0,x1=(di[i].x-di[i+1].x),y1=(di[i].y-di[i+1].y);
		for(int j=1;j<=n;j++){
			int x2=(di[i].x-di[j].x),y2=(di[i].y-di[j].y);
			if(x1*y2==x2*y1)s++;
		}
		if(max<s)max=s;
	}
	cout<<max;
	return 0;
}

给出两组相同数据,只是顺序不一样

5
0 0
1 1
2 2
0 1
1 2

5
0 0
0 1
1 1
1 2
2 2

以上代码分别输出3和2,可见原题数据保证答案一定在给出的相邻两点之间。

所以可以让数据的顺序修改一下来卡掉上面的代码就是,都不用重新造数据。

2024/3/16 11:22
加载中...