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
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    drf序列化组件
    drf入门规范
    vue发送ajax请求与跨域问题
    Vue对象提供的属性功能
    vue.js库的下载与使用
    admin后台管理与media配置
    Auth认证模块
    学习总结3月11日
    学习总结3月10日
    基于 Spark 的物流企业数据仓库 的设计与实现
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/14540887.html
Copyright © 2011-2022 走看看