列表

详情


NC208010. 杰尼杰尼

描述

小梁旅途的第一站,来到了杰尼龟兄弟的栖息地,正巧赶上杰尼龟兄弟们在举行神奇的数学游戏,它们把广阔的湖面当做二维坐标系,他们分别站在某一点向某一方向发射高压水枪,这些高压水枪相互穿透,构成了多个交点。
现在小梁通过建模,把每道高压水枪抽象成了的直线,现在她想知道那些高压水枪能构成多少个不同的交点。

输入描述

第一行输入一个整数,表示杰尼龟兄弟的数量
下面n行每行包括两个整数,k_ib_i,其含义和直线方程相同
对所有的k_ib_i在64位整形的范围内

输出描述

如果不存在交点输出"No Fire Point." (不包括引号)

否则输出一个整数表示不同交点的个数。

示例1

输入:

2
1 0
-1 2

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 5ms, 内存消耗: 768K, 提交时间: 2023-05-15 17:12:01

#include<iostream>
#include<set>
using namespace std;
#define N 110
typedef pair <double,double> pdd;
set<pdd> se;
long long n,k[N],b[N];
double x,y;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>k[i]>>b[i];
	}
	for(int i=1;i<=n-1;i++){
		for(int j=i+1;j<=n;j++){
			if(k[i]==k[j]){
				continue;
			}else{
				x=1.0*(b[j]-b[i])/(k[i]-k[j]);
				y=k[i]*x+b[i];
				pdd t;
				t.first =x;
				t.second =y;
				se.insert(t); 
			
			}
		}
	}
	
	
	if(!se.size() ){
		cout<<"No Fire Point."<<endl;
	}else{
		cout<<se.size() <<endl;
	}
	return 0;
}

C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 632K, 提交时间: 2020-08-04 19:22:01

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<double,double>pdd;
main(){
	int n;
	cin>>n;
	double k[120]={0},b[120]={0};
	set<pdd>s;
	for(int i=1;i<=n;i++){
	cin>>k[i]>>b[i];
	}
	for(int i=1;i<n;i++){
		for(int j=i+1;j<=n;j++){
			if(k[j]==k[i])continue;
			else{
			pdd t;
			t.first = (b[j]-b[i])/(k[i]-k[j]);
			t.second =k[j]*t.first +b[j];
			s.insert(t);
			}
		
		}
	}
	if(s.size()==0)cout<<"No Fire Point."<<endl;
	else 
	cout<<s.size()<<endl;
	 
}

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 660K, 提交时间: 2020-07-09 15:23:47

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n,k[101],b[101],ans=0;
	set<pair<double,double>> v;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>k[i]>>b[i];
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
		{
			if(k[j]!=k[i])
			{
				double x=(b[j]-b[i])*1.0/(k[i]-k[j]);
				double y=x*k[j]+b[j];
				v.insert(make_pair(x,y));
			}
		}
	if(v.size()==0) cout<<"No Fire Point."<<endl;
	else cout<<v.size()<<endl;
	return 0;
}

上一题