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

強烈推薦此題!這個題目我做了很久,始終不得其解。后來我向dm求教,他發來代碼。我對照數據才過的。
先考察一下這個問題的性質。
性質1:任何一個圓都覆蓋了一個閉區域。
性質2:對于任意一個點,覆蓋它的最上面的那個圓,一定是可見的。
性質3:如果一個圓不可見(它被完全覆蓋),那么它的邊界是被完全覆蓋的。
性質4:n 個圓最多有2(n-1)2個交點,這些交點把 n 個圓分成最多2(n-1)2條小圓弧。
性質5:對于每個小圓弧,要么它全被覆蓋,要么它全不被覆蓋。
根據性質1和性質2,問題轉化為恰當地找出一些點,對于每個點,把覆蓋它的最上面的圓標記為可見。
根據性質3,這些點一定在所有圓的邊界集合內。
根據性質5,所有小圓弧構成邊界集合。每個小圓弧上只要任意取一個點就能代表整個小圓弧(邊界)。不妨取中點。
至此得到算法:取所有小圓弧的中點,對每個點找到覆蓋它的最上面的圓。
根據性質4,最多取2(n-1)2個點。對每個點找到覆蓋它的最上面的圓,需要O(n)次運算。總復雜度是O(n3)。
其實此算法還有冗余,有些內部小圓弧可以不用考慮,但是我沒想出怎么優化。有誰知道更好的算法,請聯系我。blog留言或者qq交談或者發郵件都可以。


/*************************************************************************
Author: WHU_GCC
Created Time: 2007-8-24 12:33:03
File Name: pku1418.cpp
Description: 
***********************************************************************
*/

#include 
<iostream>
#include 
<algorithm>
#include 
<vector>
#include 
<complex>
#include 
<cmath>
using namespace std;
#define out(x) (cout << #x << ": " << x << endl)
const int maxint = 0x7FFFFFFF;
typedef 
long long int64;
const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL;
template 
<class T> void show(T a, int n) {for (int i = 0; i < n; ++i) cout << a[i] << ' '; cout << endl; }
template 
<class T> void show(T a, int r, int l) {for (int i = 0; i < r; ++i) show(a[i], l); cout << endl; }

typedef complex 
<double> xy;

const double PI = acos(-1.0);

double normalize(double r)
{
    
while (r < 0.0) r += 2 * PI;
    
while (r >= 2 * PI) r -= 2 * PI;
    
return r;
}


int highest_cover(xy p, vector <xy> &points, vector <double> &rs)
{
    
for (int i = rs.size() - 1; i >= 0; i--)
        
if (abs(points[i] - p) < rs[i])
            
return i;
    
return -1;
}


int main()
{
    
while (1)
    
{
        
int n;
        cin 
>> n;
        
if (!n) break;
        vector 
<xy> points;
        vector 
<double> rs;
        
for (int i = 0; i < n; i++)
        
{
            
double x, y, r;
            cin 
>> x >> y >> r;
            points.push_back(xy(x, y));
            rs.push_back(r);
        }

        vector 
<bool> visible(n, false);
        
for (int i = 0; i < n; i++)
        
{
            vector 
<double> rads;
            rads.push_back(
0.0);
            rads.push_back(
2.0 * PI);
            
for (int j = 0; j < n; j++)
            
{
                
double a = rs[i];
                
double b = abs(points[j] - points[i]);
                
double c = rs[j];
                
if (a + b < c || a + c < b || b + c < a) continue;
                
double d = arg(points[j] - points[i]);
                
double e = acos((a * a + b * b - c * c) / (2 * a * b));
                rads.push_back(normalize(d 
+ e));
                rads.push_back(normalize(d 
- e));
            }

            sort(rads.begin(), rads.end());
            
for (int j = 0; j < rads.size() - 1; j++)
            
{
                
double rad = (rads[j + 1+ rads[j]) / 2.0;
                
double diff = 4E-13;
                
for (int k = -1; k <= 1; k += 2)
                
{
                    
int t = highest_cover(xy(points[i].real() + (rs[i] + diff * k) * cos(rad),
                        points[i].imag() 
+ (rs[i] + diff * k) * sin(rad)),
                        points, rs);
                    
if (t != -1) visible[t] = true;
                }

            }

        }

        
int ans = 0;
        
for (int i = 0; i < n; i++)
            
if (visible[i])
                ans
++;
        cout 
<< ans << endl;
    }

    
return 0;
}
posted on 2007-08-24 22:43 Felicia 閱讀(578) 評論(2)  編輯 收藏 引用 所屬分類: 計算幾何
Comments
  • # re: [計算幾何]pku1418
    巫山霏云
    Posted @ 2007-08-24 23:03
    贊...加油  回復  更多評論   
  • # re: [計算幾何]pku1418
    Felicia
    Posted @ 2007-10-16 22:09
    注意,求覆蓋圓弧中點的最上圓時,有一個小技巧,就是把這個中點向內、向外分別偏移一個微小的距離  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一卡二卡三卡四卡五卡| 久久福利毛片| 欧美福利视频| 欧美人成在线视频| 欧美三级乱码| 国产精品视频最多的网站| 国产欧美日韩精品在线| 国产在线观看91精品一区| 一区在线视频| 一区二区三区 在线观看视频| 日韩一级片网址| 午夜国产精品视频| 另类尿喷潮videofree| 亚洲二区在线| 在线亚洲美日韩| 欧美一级片久久久久久久| 久久一二三国产| 国产精品成人免费| 伊人春色精品| 亚洲一区精品视频| 免费不卡在线观看av| 日韩一级黄色片| 久久久亚洲欧洲日产国码αv | 国产一区日韩欧美| 亚洲免费福利视频| 欧美专区亚洲专区| 亚洲乱码国产乱码精品精可以看| 亚洲已满18点击进入久久| 久热精品视频在线免费观看| 国产精品jizz在线观看美国| 亚洲国产一区视频| 久久青青草原一区二区| 一本久久知道综合久久| 免费观看久久久4p| 国产在线精品一区二区夜色| av成人免费在线| 牛人盗摄一区二区三区视频| 亚洲综合色激情五月| 欧美日韩久久不卡| 亚洲人成在线播放网站岛国| 久久亚洲精品一区| 欧美一级片一区| 国产精品有限公司| 亚洲欧美久久久| 亚洲精品小视频在线观看| 欧美大片免费看| 亚洲国产精品va在看黑人| 玖玖精品视频| 久久久久成人网| 一区二区亚洲精品| 久色成人在线| 久久久久久久久久久久久女国产乱| 国产女主播一区| 欧美一区三区二区在线观看| 亚洲一区国产精品| 亚洲精品一区二区网址| 亚洲精品综合| 亚洲视频播放| 亚洲精品1区2区| 香蕉成人久久| 一区二区三区欧美亚洲| 久久精品盗摄| 午夜宅男欧美| 欧美日韩免费在线观看| 美脚丝袜一区二区三区在线观看| 欧美欧美天天天天操| 久久理论片午夜琪琪电影网| 欧美日精品一区视频| 麻豆精品网站| 国产亚洲精品久久飘花| 亚洲一区二区少妇| 午夜电影亚洲| 国产精品乱码一区二区三区| 亚洲日韩成人| 亚洲乱码国产乱码精品精天堂 | 亚洲欧美在线免费观看| 麻豆精品一区二区综合av| 久久久国产一区二区三区| 国产麻豆视频精品| 欧美一区二区精品久久911| 久久国产精品99精品国产| 国产一区二区三区高清播放| 欧美一级视频精品观看| 久久婷婷久久一区二区三区| 国产一区观看| 能在线观看的日韩av| 99精品国产福利在线观看免费| 99国产精品久久久久久久久久| 久久久精品五月天| 在线免费日韩片| 免费不卡中文字幕视频| 亚洲精品在线二区| 欧美一区二区在线播放| 亚洲高清视频的网址| 欧美三级小说| 久久久亚洲高清| 亚洲欧美日韩国产另类专区| 久热精品在线| 久久精品欧美日韩精品| 亚洲精品乱码久久久久久久久| 国产精品久久综合| 免费亚洲电影在线| 久久久综合免费视频| 亚洲视频综合| 亚洲免费观看高清在线观看| 久久―日本道色综合久久| 亚洲免费高清| 亚洲精品乱码视频| 亚洲国产精品一区二区三区| 国产精品日韩精品欧美在线| 欧美精品 国产精品| 欧美国产日韩一区| 暖暖成人免费视频| 免费高清在线一区| 男男成人高潮片免费网站| 久久久久久久综合| 久久综合九色综合欧美狠狠| 久久精品理论片| 久久久亚洲欧洲日产国码αv| 亚洲欧美在线一区二区| 亚洲欧美中文字幕| 久久久久久久久久久一区| 久久精品在线观看| 欧美激情精品久久久久久大尺度 | 麻豆精品传媒视频| 久久久国产精品一区二区三区| 欧美在线播放| 欧美激情aaaa| 亚洲主播在线| 欧美二区在线观看| 国产老女人精品毛片久久| 伊人久久大香线| 亚洲午夜久久久久久久久电影院| 亚洲欧美制服另类日韩| 欧美xx69| 欧美中文在线免费| 欧美日韩综合网| 亚洲福利视频二区| 欧美主播一区二区三区美女 久久精品人 | 国产精品一区在线观看你懂的| 国产视频自拍一区| 妖精视频成人观看www| 欧美国产三区| 久久久久国产精品麻豆ai换脸| 国产精品v欧美精品v日韩| 日韩天天综合| 亚洲精品美女久久7777777| 久久久水蜜桃| 伊人精品成人久久综合软件| 欧美一区二区三区免费观看视频| 亚洲日本成人女熟在线观看| 欧美xx69| 99re热精品| 一区二区三区视频观看| 欧美日韩一区二区视频在线| 一本色道久久99精品综合| 99精品热视频只有精品10| 欧美视频第二页| 亚洲少妇诱惑| 欧美一级艳片视频免费观看| 国产亚洲人成a一在线v站 | 国产精品一区二区男女羞羞无遮挡| 伊人狠狠色丁香综合尤物| 亚洲国产精品99久久久久久久久| 美女主播一区| 亚洲一区成人| 欧美一区二区| 99re视频这里只有精品| 欧美一区二区高清在线观看| 悠悠资源网亚洲青| 亚洲精品国产精品久久清纯直播 | 欧美日韩在线视频一区| 亚洲欧美日韩在线| 久久综合色影院| 午夜伦欧美伦电影理论片| 亚洲尤物精选| 国产在线视频欧美一区二区三区| 欧美成人一区二区三区在线观看 | 麻豆精品视频在线观看| 亚洲网站在线看| 欧美成人高清| 欧美大片一区| 国产自产2019最新不卡| 99国产精品视频免费观看一公开| 韩国在线一区| 欧美一级黄色网| 欧美一区免费视频| 国产精品影视天天线| 一区二区三区日韩精品视频| 日韩午夜av在线| 欧美精彩视频一区二区三区| 亚洲第一成人在线| 亚洲激情精品| 欧美日韩亚洲一区二区三区在线观看| 美女福利精品视频| 亚洲人久久久| 欧美精品一区二区三区在线播放| 亚洲电影免费观看高清| 一区二区高清在线| 国产欧美日韩中文字幕在线|