专栏文章

题解:SP18666 UVA1 - Radiation

SP18666题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miqvqjqi
此快照首次捕获于
2025/12/04 11:31
3 个月前
此快照最后确认于
2025/12/04 11:31
3 个月前
查看原文
没测过,不知道对不对,这题简单也不难,看懂花了十分钟;
补个知识点:两点距离坐标公式 AB=sqrt(pow(x1x2)pow(y1y2))AB=sqrt(pow(x1-x2)-pow(y1-y2))
我们便写出了这么个抽象
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000;
int xx[maxn],yy[maxn];
int n;
struct pp{
	int shabi1,shabi2;
}a[maxn];
bool cmp(pp a,pp b){
	if(a.shabi1!=b.shabi1){
		return a.shabi1<b.shabi1;
	}
	else {
		return a.shabi2<b.shabi2;
	}
}
int hx1,hy1,r1,hx2,hy2,r2;
int fanzi1,fangzi,ans;
int main(){
	cin>>n;
	while(n!=0){
		fanzi1++;
		cout<<"Case "<<fanzi1<<":"<<"\n";
		ans=0;
		for(int i=1;i<=n;i++){
			cin>>xx[i]>>yy[i];
		}
		cin>>hx1>>hy1>>r1>>hx2>>hy2>>r2;
		for(int i=1;i<=n;i++){
			a[i].shabi1=(xx[i]-hx1)*(xx[i]-hx1)+(yy[i]-hy1)*(yy[i]-hy1);
			a[i].shabi2=(xx[i]-hx2)*(xx[i]-hx2)+(yy[i]-hy2)*(yy[i]-hy2);
		}
		cin>>fangzi;
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=fangzi;i++){
			ans=0;
			cin>>r1>>r2;
			for(int j=1;j<=n;j++){
				if(a[j].shabi1<=r1*r1&&a[j].shabi2<=r2*r2){
					ans++;
				}
				else if(a[j].shabi1>r1*r1&&a[j].shabi2>r2*r2){
					break;
				}
			}
			cout<<ans<<"\n";
		}
		cin>>n;
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...