青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

算法學(xué)社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
題目描述:
   在無限平面上有N(N<1,000)個(gè)圓。問一條直線最多可以“穿過”幾個(gè)圓,相切也算。

算法分析:
   
   這樣的線一定是某兩個(gè)圓的切線。但是枚舉切線再O(N)判斷的話肯定會(huì)T。

   于是我們枚舉每個(gè)“中心圓”,求出這個(gè)圓與其他所有圓的切線。并極角排序。
   把每個(gè)切線想像成事件點(diǎn),每個(gè)事件點(diǎn)要么增加一個(gè)圓,要么刪除一個(gè)圓。

   這樣的話對(duì)這個(gè)環(huán)行區(qū)間進(jìn)行統(tǒng)計(jì)就可以了。
   
   求切線的時(shí)候,要判斷中心圓與其他圓的關(guān)系: 包含,內(nèi)切or外切,相交,被包含,分離。
   求切線其實(shí)只需要求一個(gè)角就可以了,不需要求完整的兩點(diǎn)式。

#include<iostream>
#include<cassert>
#include<algorithm>
#include<cstdio>
#include<complex>
#include<cmath>
using namespace std;
// template
typedef complex<double> pnt;
typedef pair<pnt,double> circle;
const int N = 1005;
const double eps = 1e-10;
const double pi = acos(-1.0);
inline bool eq(double a, double b){return abs(b-a) < eps;}
inline double fix(double arg) {
    while(arg > pi) arg -= 2*pi;
    while(arg <= -pi) arg += 2*pi;
    return arg;
}
circle num[N];
struct line {
    int id,c;
    double arg;
    line(){}
    line(int _id,int _c,double _arg) :
    id(_id) , c(_c), arg(_arg){
//        cout<<"add: "<<id<<" "<<arg<<" "<<c<<endl;
    }
    bool operator < (const line& A) const{
        return eq(arg , A.arg) ? c > A.c : arg < A.arg;
    }
} Line[N<<2];
// cut line
#define ht first
#define rs second
inline void cut_line(const circle &A, const circle &B, int& ans, int& cnt,const int& id) {
    double d = abs(A.ht - B.ht) ;
    if(d <= abs(A.rs - B.rs)) {
        if(d <= B.rs - A.rs ) {ans ++; return ;}
        if(eq(d , A.rs - B.rs) ) {
            Line[cnt++] = line(id, 1 , arg(B.ht - A.ht));
            Line[cnt++] = line(id,-1 , arg(B.ht - A.ht));
        }
        return ;
    }
    double t;
    t = acos((A.rs - B.rs)/ d);
    double ag = arg(B.ht - A.ht);
    Line[cnt++] = line(id, 1 , fix(ag-t));
    Line[cnt++] = line(id,-1 , fix(ag+t));
    if(d > A.rs + B.rs + eps) {
        double t = acos((A.rs + B.rs)/d);
        Line[cnt++] = line(id, 1 , fix(ag+t));
        Line[cnt++] = line(id,-1 , fix(ag-t));
    }
}
// solve
bool vis[N];
int work(int n, int len){
    int ans = 0, sum = 0;
    for(int i=0;i<n;i++){
        vis[i] = 0;
    }
    for(int i=0;i<len+len;i++) {
        int k = i%len;
        int id = Line[k].id;
        int c = Line[k].c;
        if(c == 1){
            assert(vis[id]==0);
            vis[id] = 1; sum ++;
        }
        else if(c == -1) {
            if(vis[id] == 1)
                sum --, vis[id] = 0;
        }
        if(sum > ans ) ans = sum;
    }
    return ans;
}
// main
int main(){
    int cas;
    cin >> cas;
    for(int oo=1; oo<= cas; oo++) {
        int n,len = 0;
        scanf("%d",&n);
        for(int i=0;i<n;i++) {
            int x,y,r;
            scanf("%d%d%d",&x,&y,&r);
            num[i] = make_pair(pnt(x,y) , r);
        }
        int ans = 0;
        for(int s = 0; s < n; s ++) {
//            cout<<"start: "<<s<<endl;
            len = 0; int sum = 1;
            for(int i=0;i< n; i++) if(i!=s) 
                cut_line(num[s] , num[i], sum, len, i);
            sort(Line, Line + len);
            sum += work(n,len);
            if(sum > ans) ans = sum;
        }
        printf("Case #%d: %d\n",oo, ans);
    }
}
posted on 2012-08-06 14:58 西月弦 閱讀(1260) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 解題報(bào)告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线日韩av| 欧美影院在线播放| 亚洲在线播放| 亚洲专区欧美专区| 午夜精品国产更新| 久久嫩草精品久久久精品| 麻豆精品91| 亚洲欧洲在线观看| 91久久一区二区| 一本大道av伊人久久综合| 一本久久综合亚洲鲁鲁| 亚洲一区二区毛片| 午夜精品一区二区三区电影天堂 | 国产老肥熟一区二区三区| 国产日韩精品视频一区| 黑人极品videos精品欧美裸| 在线播放精品| 一区二区三区欧美在线| 欧美自拍偷拍午夜视频| 亚洲成人在线视频播放 | 亚洲影院免费观看| 午夜天堂精品久久久久| 男女精品视频| 国产日韩av一区二区| 亚洲大片一区二区三区| 亚洲男人第一av网站| 毛片基地黄久久久久久天堂| 99综合视频| 麻豆freexxxx性91精品| 国产精品有限公司| 99国内精品久久| 开心色5月久久精品| 夜夜爽www精品| 免费欧美日韩国产三级电影| 国产美女一区二区| 亚洲青色在线| 久久精品国产2020观看福利| 日韩视频永久免费| 久久男女视频| 国产性猛交xxxx免费看久久| 亚洲少妇在线| 亚洲激情综合| 久久综合色播五月| 国产日韩欧美不卡| 亚洲欧美电影在线观看| 亚洲激情视频| 欧美国产精品劲爆| 亚洲高清一区二| 久久久久国色av免费观看性色| 亚洲精品影院| 欧美大片在线看免费观看| 激情久久五月天| 午夜精品视频在线观看| 日韩亚洲欧美成人| 欧美不卡视频一区发布| 狠狠色狠狠色综合日日tαg| 欧美一区二区三区成人| 一本大道久久精品懂色aⅴ| 欧美刺激午夜性久久久久久久| 销魂美女一区二区三区视频在线| 国产精品成人免费精品自在线观看| av成人免费在线观看| 最新国产成人在线观看| 欧美精品久久久久a| 亚洲精品中文字| 亚洲国产精品va| 欧美激情第9页| 亚洲精品久久久久久久久| 欧美激情在线| 欧美精品一区二区高清在线观看| 亚洲欧洲视频| 亚洲精品资源| 国产精品成人久久久久| 欧美尤物巨大精品爽| 欧美在线观看视频在线 | 亚洲精品视频免费| 亚洲经典一区| 欧美日韩一区在线观看| 亚洲视频图片小说| 亚洲一级高清| 怡红院精品视频在线观看极品| 免费在线看一区| 欧美极品色图| 亚洲网址在线| 欧美一区二区三区电影在线观看 | 亚洲一区二区三区高清 | 香蕉免费一区二区三区在线观看 | 欧美一级成年大片在线观看| 欧美一二区视频| 亚洲日本在线视频观看| 一本不卡影院| 在线播放一区| 99视频有精品| 在线观看日韩av电影| 亚洲三级视频| 国产日韩欧美成人| 91久久国产综合久久91精品网站| 欧美视频二区| 农村妇女精品| 国产精品―色哟哟| 免费看精品久久片| 欧美午夜精品电影| 欧美成人国产| 国产精品在线看| 亚洲国产日韩在线一区模特| 国产欧美一区视频| 91久久综合亚洲鲁鲁五月天| 国产日本欧美视频| 亚洲精品视频在线观看网站| 激情综合色综合久久| 洋洋av久久久久久久一区| 伊人精品在线| 亚洲欧美一区二区三区极速播放| 亚洲免费观看| 久久久久天天天天| 久久国产视频网站| 欧美啪啪成人vr| 亚洲国产精品一区二区第四页av| 制服丝袜激情欧洲亚洲| 亚洲日本欧美日韩高观看| 久久精品99国产精品| 欧美一区不卡| 欧美视频日韩视频| 亚洲成人在线网站| 在线观看一区二区精品视频| 亚洲综合色自拍一区| 一区二区三区国产精品| 欧美风情在线观看| 免费在线观看成人av| 国产自产精品| 午夜精品美女久久久久av福利| 亚洲一区二区三区精品视频| 欧美激情在线播放| 亚洲第一福利视频| 最新69国产成人精品视频免费| 久久一区二区视频| 美女脱光内衣内裤视频久久网站| 国产亚洲综合在线| 欧美有码视频| 欧美成人第一页| 亚洲国产精品悠悠久久琪琪| 麻豆成人综合网| 欧美国产日韩一区二区在线观看| 亚洲电影第三页| 免费看亚洲片| 亚洲激情av在线| 亚洲视屏在线播放| 欧美日韩在线视频首页| 艳妇臀荡乳欲伦亚洲一区| 午夜精品一区二区三区在线视| 国产精品sss| 午夜欧美精品| 久久综合一区| 99pao成人国产永久免费视频| 欧美日韩精品免费看| 在线视频你懂得一区| 久久国产精品久久久久久久久久| 国产在线精品成人一区二区三区| 久久久久久久久岛国免费| 亚洲国产mv| 午夜精品视频网站| 一区视频在线看| 欧美日本亚洲| 欧美一区三区二区在线观看| 亚洲成人在线视频网站| 亚洲一区二区在线免费观看视频| 国产免费成人av| 欧美14一18处毛片| 亚洲午夜精品福利| 欧美+日本+国产+在线a∨观看| 日韩视频一区二区在线观看 | 欧美日韩亚洲系列| 亚洲一区国产| 欧美电影免费观看高清| 一区二区三区福利| 国产亚洲精品一区二555| 欧美成va人片在线观看| 亚洲一卡久久| 亚洲大黄网站| 久久国产精品久久久久久| 最新国产精品拍自在线播放| 亚洲一区图片| 亚洲高清久久久| 欧美资源在线| 一区二区久久久久| 黄色精品在线看| 国产精品入口| 欧美日韩一区二区免费在线观看 | 欧美不卡福利| 西西裸体人体做爰大胆久久久| 亚洲激情图片小说视频| 国产美女在线精品免费观看| 欧美精品激情| 美日韩精品视频| 欧美一区二区三区在线观看| 一区二区欧美亚洲| 亚洲精品国产视频| 欧美成人免费大片| 久久国产88| 午夜精品久久久久久久99樱桃|