GOI D2T2 95pts 求调
  • 板块灌水区
  • 楼主heaksicn杠J歪
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/9/11 18:04
  • 上次更新2023/10/27 11:58:34
查看原帖
GOI D2T2 95pts 求调
343251
heaksicn杠J歪楼主2022/9/11 18:04

rt.

#include<bits/stdc++.h>
using namespace std;
int m,n,k;
int x[502],y[502],r[502];
bool ds(int x1,int y1,int x2,int y2,int rp){
	double sb=(double)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	if((double)rp>=sb) return 1;
	else return 0;
}
int dp[502];
int main(){
	scanf("%d%d%d",&m,&n,&k);
	for(int i=1;i<=k;i++) scanf("%d%d%d",&x[i],&y[i],&r[i]);
	x[0]=0,y[0]=0;
	k++;
	x[k]=m;
	y[k]=n;
	for(int i=0;i<=k;i++) dp[i]=1e9;
	dp[0]=0;
	for(int i=0;i<=k;i++){
		int nx=x[i],ny=y[i]+r[i],cnt=0,l=1;
		while(nx<=m){
			for(int j=i+1;j<=k;j++){
				if(ds(nx,ny,x[j],y[j],r[j])) dp[j]=min(dp[j],dp[i]+cnt+1);
			}
			nx++;
			ny=max(ny-1,0);
			cnt++;
		}
	}
	if(dp[k]>=1e9) dp[k]=0;
	cout<<dp[k]-1;
	return 0;
}
2022/9/11 18:04
加载中...