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

算法學(xué)社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
題目描述:
   平面上有N<300個點。每個兩個點如果距離小于R且之間沒有共線的另一個點,則這兩點之間有一條邊。求這個圖的生成樹的個數(shù)mod 10007。

算法分析:
   用O(N*NlogN)的方法建圖。即枚舉每個點然后極角排序來判斷是否存在共線的點。
   
   建圖之后的任務(wù)是統(tǒng)計生成樹的個數(shù),方法是求這個圖的Krichhoof矩陣的n-1主行列式的值。
   Krichhoof矩陣G是這樣的:
      Gii等于點i的度數(shù)
      當(dāng)i和j有邊時,Gij = -1。否則Gij等于0。
   
   然后行列式求值。方法是高斯消元求上三角陣。行列式的值等于對角線元素的積。
   由于是整數(shù)然后再mod。我們再消元時需要求最小公倍數(shù)。還需要拓展歐幾里得算法求逆元。
   總之是比較綜合的一道好題。

#include<iostream>
#include<algorithm>
#include<cassert>
#include<cstdio>
#include<complex>
#include<cmath>
using namespace std;
// geometry
const double eps = 1e-9;
const int N = 300 + 10;
#define X real
#define Y imag
typedef complex <double> pnt;
pnt num[N];
static double cross (const pnt &a, const pnt &b) { return Y(conj(a) * b);}
pair <double,int> hash[N];
int tp;
bool cmp(const pair<double,int> &a , const pair<double,int> &b){
    #define  ff first
    #define  ss second
    return (a.ff - b.ff) < eps ? abs(num[a.ss] - num[tp]) < abs(num[b.ss] - num[tp]): a.ff < b.ff;
}
// lcm
const int mod = 10007;
int G[N][N],vis[N];
int gcd(int a,int b) { return b ? gcd(b , a%b) : a;}
int lcm(int a,int b){
    return a * b / gcd(a,b);
}
// exgcd
int res[mod];
void exgcd(int a,int b,int &x,int &y){
    if( b== 0) {
        x = 1; y = 0; return ;
    }
    exgcd(b, a%b, x, y);
    int t = y; y = x - a/b*y; x = t;
}
int cal_res(int v) {
    int x, y;
    exgcd(v, mod, x, y);
    return (x + mod) % mod;
}
// main
int main(){
    int test;
    cin >> test ;
    for(int i=1;i<mod;i++) res[i] = cal_res(i);
    while(test -- ){
        int n,r;
        scanf("%d%d",&n,&r);
        for(int i=0;i<n;i++){
            int x,y;
            scanf("%d%d",&x,&y);
            num[i] = pnt(x,y);
        }
        for(int i=0;i<n;i++) for(int j=0;j<n;j++) G[i][j] = 0;
        for(tp=0;tp<n;tp++) {
            int len = 0;
            for(int j=0; j< n;j ++) if(tp != j) 
                hash[len ++] = make_pair(arg(num[j] - num[tp]),j);
            sort(hash, hash + len);
            for(int j=0; j<len; j++) if(!j || abs(hash[j].first - hash[j-1].first) > eps) {
                int v = hash[j].second;
                if(abs(num[tp] - num[v]) < r + eps){
                    G[tp][v] = mod - 1;
                    G[tp][tp] ++;
                }
            }
        }
        // gauss
        n --;
        int ans = 1;
        for(int i=0;i<n;i++) vis[i] = 0;
        for(int i=0;i<n;i++) {
            int s = -1;
            for(int j=0;j<n;j++) if(!vis[j] && G[j][i]){
                s = j; break;
            }
            if(s == -1) {
                ans = 0;
                break;
            }
            ans = (ans * G[s][i]) % mod;
            vis[s] = 1;
            for(int j=0;j<n;j++) if(!vis[j] && G[j][i]) {
                int c = lcm(G[j][i], G[s][i]);
                int t = c / G[j][i];
                int p = c / G[s][i];
                assert(t < mod);
                ans = (ans * res[t]) % mod;
                for(int k = i; k< n; k++) {
                    G[j][k] = (G[j][k] * t - G[s][k] * p) % mod;
                    G[j][k] = (G[j][k] + mod) % mod;
                }
            }
        }
        cout << (ans == 0 ? -1 : ans) << endl;
    }
}
posted on 2012-07-29 22:29 西月弦 閱讀(450) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区三区中文字幕 | 亚洲在线观看视频| 久久精品亚洲| 亚洲人成在线观看网站高清| 欧美高清一区| 亚洲欧美在线免费观看| 鲁大师影院一区二区三区| 亚洲激情二区| 国产精品v欧美精品v日本精品动漫| 亚洲美女视频在线观看| 久久久久久久综合色一本| 日韩视频在线免费| 影音先锋中文字幕一区| 久久久综合免费视频| 久久精品国产v日韩v亚洲| 亚洲国产婷婷香蕉久久久久久99| 亚洲免费精品| 亚洲激情在线| 伊人精品视频| 国产原创一区二区| 国产精品一区二区三区四区五区| 欧美成人午夜激情在线| 久久久久久久91| 久久精品一区二区三区中文字幕| 国产精品日韩欧美一区二区三区| 午夜精品免费在线| 亚洲国产成人91精品| 国产精品入口日韩视频大尺度| 欧美国产在线电影| 久久精品九九| 性色一区二区三区| 欧美专区18| 久久精品国语| 免费成人激情视频| 免费成人av| 噜噜噜久久亚洲精品国产品小说| 国产精品99久久久久久久久| 日韩视频久久| 欧美一区二区三区啪啪| 久久久久网址| 欧美激情欧美狂野欧美精品| 欧美女主播在线| 国产精品剧情在线亚洲| 在线观看精品| 中文亚洲免费| 久久国产精品一区二区三区四区 | 久久精品视频网| 免费久久99精品国产自| 日韩亚洲欧美一区| 欧美一区二区三区精品电影| 欧美大片在线看| 欧美母乳在线| 好看的日韩av电影| 一区二区欧美日韩| 蜜臀va亚洲va欧美va天堂| 亚洲久色影视| 老司机aⅴ在线精品导航| 欧美色视频日本高清在线观看| 国产日韩亚洲欧美| 亚洲视频电影在线| 亚洲国产精品一区二区第四页av| 亚洲网站在线| 欧美精品一区二区精品网| 国模吧视频一区| 亚洲欧美视频在线| 一本久道综合久久精品| 免费成人黄色片| 在线观看欧美日韩| 久热成人在线视频| 久久精品一区二区三区四区| 国产日韩欧美一区在线 | 欧美一站二站| 国产欧美在线看| 香蕉久久一区二区不卡无毒影院 | 欧美伊人久久久久久午夜久久久久| 欧美国产日韩亚洲一区| 久久视频在线看| 亚洲国产黄色| 91久久精品国产| 欧美日本高清| 亚洲欧美成人综合| 性欧美video另类hd性玩具| 国产精品一区二区久激情瑜伽| 欧美一区二区视频在线| 亚洲一区在线免费| 国产偷国产偷精品高清尤物| 久久精品天堂| 久久亚洲一区| 一本大道久久精品懂色aⅴ| 亚洲精品久久久蜜桃| 欧美日韩亚洲不卡| 亚洲一区二区精品| 亚洲欧美另类在线| 红桃视频成人| 亚洲最新在线视频| 亚洲永久免费视频| 一区二区三区久久| 狠狠色丁香婷婷综合影院| 欧美不卡视频一区| 欧美性猛交xxxx乱大交退制版| 午夜精品久久久久久久蜜桃app| 久久久久久久久久久久久久一区| 欧美视频久久| 欧美高清在线播放| 欧美性生交xxxxx久久久| 久热综合在线亚洲精品| 欧美日韩亚洲一区二区三区| 亚洲日本中文字幕免费在线不卡| 91久久精品www人人做人人爽| 一本一道久久综合狠狠老精东影业| 国产视频不卡| 亚洲韩国日本中文字幕| 国产精品一区久久| 日韩一级欧洲| 日韩一级片网址| 新狼窝色av性久久久久久| 99re8这里有精品热视频免费 | 国产中文一区| 99国内精品| 亚洲欧美国产另类| 亚洲女同性videos| 亚洲先锋成人| 国产精品伦一区| 亚洲黄色在线观看| 亚洲美女视频网| 嫩草影视亚洲| 亚洲国内欧美| 亚洲一区美女视频在线观看免费| 欧美日韩免费在线视频| 99国产精品久久久久久久成人热 | 午夜精品国产更新| 国产精品三上| 久久久久国内| 亚洲欧洲久久| 亚洲专区国产精品| 国产日韩欧美三区| 亚洲经典自拍| 欧美一区二区三区免费在线看| 国产精品视频久久| 老司机免费视频一区二区三区| 亚洲国产小视频| 欧美影院视频| 亚洲最新色图| 欧美视频中文一区二区三区在线观看| 欧美一区二区三区精品| 鲁大师影院一区二区三区| 亚洲片在线观看| 韩国av一区二区三区| 久久精品国产亚洲aⅴ| 在线观看日韩av电影| 欧美精品福利视频| 嫩草国产精品入口| 免费不卡欧美自拍视频| 亚洲欧美另类中文字幕| 在线观看视频亚洲| 国产精品久久久久久影院8一贰佰| 亚洲第一在线综合在线| 欧美日韩精品福利| 亚洲欧美视频一区| 亚洲欧洲一区二区三区| 久久久久久久综合日本| 亚洲午夜精品久久久久久浪潮| 国产亚洲欧美日韩日本| 一区二区三区福利| 影音先锋久久久| 国内自拍亚洲| 国产日韩欧美日韩大片| 国产精品中文字幕欧美| 国产精品毛片a∨一区二区三区|国| 免费成人高清视频| 蘑菇福利视频一区播放| 久久综合色婷婷| 久久日韩粉嫩一区二区三区| 久久久夜色精品亚洲| 久久久精品日韩| 久久―日本道色综合久久| 麻豆成人在线| 欧美日韩国产精品一区| 国产精品久久久久久久久果冻传媒| 欧美日韩精品在线观看| 欧美日韩一区二区三区在线观看免| 欧美日韩精品一二三区| 久久精品视频亚洲| 欧美日韩国产成人在线观看| 国产精品丝袜久久久久久app|