zoukankan      html  css  js  c++  java
  • NC110113 Summer Earnings(bitset)

    圆的半径就是三角形中最短边的一半

    因此我们枚举所有的边,从大到小维护bitset

    如果对于当前边的两点,已经有一个点与他们相连,那么说明这条边就是答案

    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    typedef pair<int,int> pll;
    const int N=9e6+10;
    const int inf=0x3f3f3f3f;
    const int mod=1e9+7;
    struct node{
        int x,y;
    }s[3010];
    bitset<3010> bt[3010];
    ll get(int i,int j){
        return (s[i].x-s[j].x)*(s[i].x-s[j].x)+(s[i].y-s[j].y)*(s[i].y-s[j].y);
    }
    struct SQ{
        ll dis;
        int x,y;
    }e[N];
    int cnt;
    bool cmp(SQ a,SQ b){
        return a.dis>b.dis;
    }
    int main(){
        //ios::sync_with_stdio(false);
        int n;
        cin>>n;
        int i;
        for(i=1;i<=n;i++){
            cin>>s[i].x>>s[i].y;
        }
        for(i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                ll dis=get(i,j);
                e[++cnt]={dis,i,j};
            }
        }
        sort(e+1,e+1+cnt,cmp);
        for(i=1;i<=cnt;i++){
            bitset<3010> tmp=bt[e[i].x]&bt[e[i].y];
            if(tmp.count()){
                printf("%.7f
    ",sqrt(e[i].dis)/2.0);
                return 0;
            }
            bt[e[i].x][e[i].y]=1;
            bt[e[i].y][e[i].x]=1;
        }
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    选择省市区的组件
    element ui 合计/table show-summary
    双击放大预览功能/组件
    vue 中获取初始的值
    vue 兄弟组件之间通信
    js数组常用到的方法,及其注意事项
    ps
    最有效的学习方法
    css2
    prettytable:像数据库一样格式化输出内容
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/14540887.html
Copyright © 2011-2022 走看看