日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hihoCoder 1227 2015 北京网络赛 A题

發布時間:2023/11/30 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hihoCoder 1227 2015 北京网络赛 A题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:

給定m個點,然后從這m個點里找到一個點作為圓心,求一個最小的半徑使得圓內剛好有n個點,沒有壓線的點。

思路:

預處理一下各點間的距離,暴力枚舉圓心,然后找到排序后的第n個判斷即可。坑點:n>m的情況要特判一下。

code:

#include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <cmath> using namespace std;const int N=105; struct node {/* data */double x,y;void read(){scanf("%lf%lf",&x,&y);} }v[N]; vector<double> vt[N]; double cal(node A,node B){return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); } int main() {int T;scanf ("%d",&T);while (T--){int m,n;scanf ("%d%d",&m,&n);for (int i=0;i<=m;i++) vt[i].clear();for (int i=0;i<m;i++) v[i].read();for (int i=0;i<m;i++){for (int j=0;j<m;j++){if (i==j) vt[i].push_back(0);else vt[i].push_back(cal(v[i],v[j]));}}if (n>m){puts("-1");continue;}int ans=0x3f,f=0;for (int i=0;i<m;i++){sort (vt[i].begin(),vt[i].end());int tt=(int) vt[i][n-1] + 1;if (tt>=vt[i][n] &&n<m ) continue;else {ans=min(ans,tt);f=1;}//cout<<ans<<endl;}if (!f) ans=-1;cout<< ans<< endl;} }

總結

以上是生活随笔為你收集整理的hihoCoder 1227 2015 北京网络赛 A题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。