第一次做NOI/NOI+/CTSC的题,没想到竟是这样
查看原帖
第一次做NOI/NOI+/CTSC的题,没想到竟是这样
672360
Ch35楼主2022/6/12 14:52

结果

#include<bits/stdc++.h>
using namespace std;
int ax[105],ay[105],bx[105],by[105],b[105],n,m,k,minn=99999999,j,cnt;
double jl;
bool e;
void dfs(int qb){
    if(qb>m){minn=min(minn,cnt);return;}
    if(minn==1)return;
    if(cnt>=minn)return;
    for(int i=1;i<=n;i++){
        if(b[i]==0){
            jl=sqrt((abs(bx[i]-ax[qb]))*(abs(bx[i]-ax[qb]))+(abs(by[i]-ay[qb]))*(abs(by[i]-ay[qb])));
            if(jl<=k){
                e=0;
                for(j=qb+1;j<=m;j++){
                    jl=sqrt((abs(bx[i]-ax[j]))*(abs(bx[i]-ax[j]))+(abs(by[i]-ay[j]))*(abs(by[i]-ay[j])));
                    if(jl>k){
                        if(e==0)j++;
                        break;
                    }
                    e=1;
                }
                b[i]=1;
                cnt++;
                dfs(j);
                cnt--;
                b[i]=0;
            }
        }
    }
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++)cin>>ax[i]>>ay[i];
	for(int i=1;i<=n;i++)cin>>bx[i]>>by[i];
	dfs(1);
	cout<<minn;
   	return 0;
}

真不知道你们是怎么做出来的。

2022/6/12 14:52
加载中...