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

置頂隨筆

[置頂]頁(yè)碼計(jì)數(shù)

     摘要: 【問(wèn)題描述】

一本書的頁(yè)數(shù)為N,頁(yè)碼從1開始編起,請(qǐng)你求出全部頁(yè)碼中,用了多少個(gè)0,1,2,…,9。其中—個(gè)頁(yè)碼不含多余的0,如N=1234時(shí)第5頁(yè)不是0005,只是5。

【輸入】

一個(gè)正整數(shù)N(N≤109),表示總的頁(yè)碼。

【輸出】

共十行:第k行為數(shù)字k-1的個(gè)數(shù)。

【樣例】

count.in count.out

11 1

4

1

1

  閱讀全文

posted @ 2011-08-18 19:26 AK 閱讀(3427) | 評(píng)論 (2)編輯 收藏

[置頂]HDU 1217 Arbitrage

     摘要: HDU 1217 Arbitrage
題意是說(shuō)給你N種貨幣以及,貨幣與貨幣之間的M種匯率,
讓你判斷是否存在經(jīng)過(guò)若干次貨幣的兌換使得某種貨幣的
價(jià)值大于原來(lái)本身的價(jià)值,比如所:美元:美元 = 1 : 1;
題意就是讓你判斷,在當(dāng)前的貨幣兌換率的基礎(chǔ)上,能不能
使 美元 : 美元 > 1 : 1; 利用Floyd算法即可搞定,代碼如下:  閱讀全文

posted @ 2011-08-17 09:55 AK 閱讀(1547) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1280 前m大的數(shù)

     摘要: HDU 1280 前m大的數(shù)
給定的N個(gè)整數(shù)序列, 兩兩求和,從大到小輸出M個(gè)和數(shù)。
因?yàn)樗姓麛?shù)不超過(guò)5000,則相加不會(huì)超過(guò)10000,可以
用哈希解決。  閱讀全文

posted @ 2011-08-16 16:40 AK 閱讀(1743) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1116 Play on Words

HDU 1116 Play on Words
這個(gè)題目要運(yùn)用到歐拉路得相關(guān)知識(shí),并且也要并查集,題目說(shuō)的是:給你n個(gè)單詞,要你判斷這些單詞能不能首尾相連。
理解題目意思后,進(jìn)行轉(zhuǎn)化,輸入字符串,提取首位字母作為下標(biāo)來(lái)表示兩節(jié)點(diǎn)的出現(xiàn),以及相對(duì)應(yīng)節(jié)點(diǎn)入度和出度的增加,
轉(zhuǎn)化為并查集的應(yīng)用即可。那么從可以想象一幅由首位字母節(jié)點(diǎn)構(gòu)成的圖,當(dāng)且僅當(dāng)圖是一條歐拉回路或者歐拉通路的時(shí)候,
才能滿足題目的要求,至于歐拉回路和歐拉通路的判定可以總結(jié)為如下:
1)所有的點(diǎn)聯(lián)通
2)歐拉回路中所有點(diǎn)的入度和出度一樣。
3)歐拉通路中起點(diǎn)的入度 - 出度 = 1,終點(diǎn)的 初度 - 入度 = 1, 其他的所有點(diǎn)入度 = 出度;

有了上面這些知識(shí)點(diǎn)做鋪墊,相信理解起來(lái)就比較容易了,下面我的代碼:
 1 #include<stdio.h>   
 2 #include<string.h>   
 3 #include<math.h>   
 4 #define N 30   
 5 /*
 6 歐拉回路,所有點(diǎn)連通,并且所有點(diǎn)的入度等于出度。 
 7 歐拉通路。從原點(diǎn) S出發(fā),經(jīng)過(guò)所有點(diǎn),從終點(diǎn) t出去。 
 8 所有點(diǎn)除起點(diǎn)終點(diǎn)外的度都是偶數(shù),且出度等于入度
 9 起點(diǎn)的出度比入度大 1 
10 終點(diǎn)的入度比出度大 1 
11 */ 
12 
13 int father[N],vis[N];  
14 //father[i] 表示節(jié)點(diǎn) i 的 BOSS ! vis[i]表示節(jié)點(diǎn) i 出現(xiàn)過(guò)! 
15 int findx(int x)  
16 {  //找節(jié)點(diǎn)  x 的 BOSS ! 
17     if(father[x]!=x)  
18         father[x]=findx(father[x]);  
19     return father[x];  
20 }  
21 void merge(int a,int b)  
22 {  // 合并 節(jié)點(diǎn) a 和節(jié)點(diǎn) b ! 
23     int x,y;  
24     x=findx(a);  
25     y=findx(b);  
26     if(x!=y) father[x]=y;  
27 }  
28 int main()  
29 {  
30     int text,cnt,i,j,n,out[N],in[N],p[30],a,b;  
31     char str[1001];  
32     scanf("%d",&text);  
33     while(text--)  
34     {  
35         scanf("%d",&n);  
36         memset(out,0,sizeof(out));  
37         memset(in,0,sizeof(in));  
38         memset(vis,0,sizeof(vis));  
39         for(i=0;i<26;i++)  
40             father[i]=i;  //初始化數(shù)組 
41         while(n--)  
42         {  // 處理所給信息 ! 
43             scanf("%s",str);  
44             a=str[0]-'a';  
45             b=str[strlen(str)-1]-'a';  
46             merge(a,b);  
47             out[a]++;  
48             in[b]++;  // 記錄節(jié)點(diǎn) a 和 b的入度和出度 
49             vis[a]=1;  
50             vis[b]=1//標(biāo)記節(jié)點(diǎn) a 和 b的出現(xiàn) 
51         }  
52         for(i=0;i<26;i++)  
53             father[i]=findx(i);  //找出每個(gè)節(jié)點(diǎn)的 BOSS  
54         for(cnt=0,i=0;i<26;i++)  
55             if(vis[i] && father[i]==i)  
56                 cnt++;  // 統(tǒng)計(jì)最終 BOSS 即根節(jié)點(diǎn)的個(gè)數(shù) 。 
57         if(cnt>1)  //圖不連通   
58         {  
59             printf("The door cannot be opened.\n");  
60             continue;  
61         }  
62           
63         for(j=0,i=0;i<26;i++)  
64             if(vis[i] && out[i]!=in[i])  
65                 p[j++]=i;  //統(tǒng)計(jì)入度和出度不相等的點(diǎn)的信息 
66         if(j==0)   
67         {//歐拉回路,即環(huán)   
68             printf("Ordering is possible.\n");  
69             continue;  
70         }  
71         if(j==2 && ( out[p[0]]-in[p[0]]==1 && in[p[1]]-out[p[1]]==1  
72             || out[p[1]]-in[p[1]]==1 && in[p[0]]-out[p[0]]==1 ) )  
73         {//歐拉通路   
74             printf("Ordering is possible.\n");  
75             continue;  
76         }  
77         printf("The door cannot be opened.\n");  
78     }  
79     return 0;  
80 }  
81 




posted @ 2011-07-18 10:57 AK 閱讀(2062) | 評(píng)論 (3)編輯 收藏

[置頂]HDU 1301 Jungle Roads

     摘要: HDU 1301 Jungle Roads
這個(gè)題目的意思就是說(shuō)給你n個(gè)相關(guān)點(diǎn),用A - I 來(lái)表示,然后給出n-1行,第 i 行表示從點(diǎn) i 到其他點(diǎn)的相關(guān)信息。
在給出的map的基礎(chǔ)上,要求選擇適當(dāng)?shù)穆肪€,使得所有給出的點(diǎn)都能夠到達(dá)任意其他點(diǎn),問(wèn)題規(guī)模不大,直接矩陣
存儲(chǔ),利用prim 算法搞定。  閱讀全文

posted @ 2011-07-18 09:31 AK 閱讀(1630) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1233 還是暢通工程

     摘要: HDU 1233 還是暢通工程
題目意思就是給你一個(gè)有n個(gè)點(diǎn)的圖,給出n *(n-1)/ 2 條邊的信息,包括邊的端點(diǎn)和邊的長(zhǎng)度,要求
在滿足所有點(diǎn)在同一個(gè)連通分支上的前提下,選擇最短的道路來(lái)修建。典型的最小生成樹算法,同樣,問(wèn)題
規(guī)模不大,直接矩陣就可以勝任。  閱讀全文

posted @ 2011-07-18 09:20 AK 閱讀(2388) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1232 暢通工程

HDU 1232 暢通工程
這個(gè)題目也是典型的最小生成樹算法的利用,不同于其他的題目就在于其它要求的是要添加的邊的最少數(shù)目,使得任意兩
點(diǎn)都有聯(lián)系,利用并查集算法 ,在題目已經(jīng)給出的map基礎(chǔ)上,統(tǒng)計(jì)兩棵樹相并的次數(shù),即使要添加的路徑的最少數(shù)目。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int father[1001], tot;//father[i] 記錄 i 的 BOSS !  
 5 //tot 統(tǒng)計(jì)最初至少需要添加的路徑數(shù)目 ! 
 6 
 7 int find(int x)
 8 {//找 到  x 的 BOSS ! 
 9     int r = x;
10     while (r != father[r]) r = father[r];
11     return r;// 
12 }
13 
14 void join(int a, int b)
15 {//將 a 和  b 的 BOSS 統(tǒng)一! 
16      int fa = find(a), fb = find(b);
17      if (fa != fb)
18      {
19         father[fa] = fb;
20         tot --// 統(tǒng)一了一次兩個(gè)陣營(yíng)的  BOSS ,所以需要添加的路徑的數(shù)目減一! 
21      }
22 }
23 
24 int main()
25 {
26     int n, m, x, y;
27     while (scanf("%d"&n), n)
28     {
29           scanf("%d"&m);
30           tot = n-1// 初始化 tot 等于 n 個(gè)點(diǎn)聯(lián)通所需要的最少邊的數(shù)目 ! 
31           father[n+1];
32           for (int i=1; i<=n; i++)father[i] = i;//初始化自己是自己的 BOSS ! 
33           
34           for (int i=1; i<=m; i++)
35           {
36               scanf("%d %d",&x, &y);
37               join(x, y);  
38           }
39           printf("%d\n",tot); //輸出在已有基礎(chǔ)上還需要的邊的數(shù)目! 
40     }
41     return 0;
42 }
43 

posted @ 2011-07-18 08:59 AK 閱讀(1783) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1162 Eddy's picture

HDU 1162 Eddy's picture

這個(gè)題目也是典型的最小生成樹算法,跟之前的那個(gè)題目是差不多的,也就是說(shuō):給你n個(gè)二維平面點(diǎn),
讓你添加適當(dāng)?shù)倪叄沟盟械狞c(diǎn)都在同一個(gè)聯(lián)通分支上,也就是說(shuō)任何點(diǎn)之間都有路徑可以到達(dá)。
問(wèn)題規(guī)模不大,直接用矩陣存數(shù)據(jù),利用prim 算法就可以搞定。此時(shí)任意兩點(diǎn)之間的“權(quán)值”就是
兩點(diǎn)之間的距離。
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 #include<string.h>
 5 const double MAX = 1000000000.0
 6 struct Point
 7 {
 8        double x, y;
 9 }point[101];
10 
11 double map[101][101];
12 int v[101], n;
13 
14 double Dis(Point a, Point b)
15 {
16        return sqrt((a.x - b.x) * (a.x - b.x) +(a.y - b.y) * (a.y - b.y)); 
17 
18 
19 void Build()
20 {
21      memset(map, 0sizeof(map));
22      for (int i=0; i<n; i++)
23      {
24          for (int j=i; j<n; j++)
25          {
26              if (i == j) map[i][j] = MAX;
27              else 
28              {
29                    map[j][i] = map[i][j] = Dis(point[i], point[j]);
30              }
31          }
32      }
33 }
34 
35 void MinTree()
36 {
37      double sum = 0.0, min;
38      memset(v, 0sizeof(v));
39      v[0= 1;
40      int flag;
41      for (int i=1; i<n; i++)
42      {
43          min = MAX;
44          for (int j=0; j<n; j++)
45          {
46              if (!v[j] && map[0][j] < min)
47              {
48                 min = map[0][j];
49                 flag = j;
50              }
51          }
52          sum += min;
53          v[flag] = 1;
54          for (int j=0; j<n; j++)
55          {
56              if (!v[j] && map[0][j] > map[flag][j])
57              {
58                 map[0][j] = map[flag][j];
59              }
60          }
61      }
62      printf("%.2lf\n",sum);
63 }
64 int main()
65 {
66     while (scanf("%d"&n)!= EOF)
67     {
68           map[n][n];
69           point[n];
70           for (int i=0; i<n; i++)
71           {
72               scanf("%lf %lf"&point[i].x, &point[i].y);
73           }
74           Build();
75           MinTree();
76     }
77     return 0;
78 }
79 


posted @ 2011-07-18 08:42 AK 閱讀(1363) | 評(píng)論 (0)編輯 收藏

[置頂]HDU 1102 Constructing Roads

     摘要: HDU 1102 Constructing Roads

這個(gè)題目的意思就是說(shuō),給你一個(gè)有n個(gè)村莊的地圖,map[i][j]表示從村莊 i 到村莊 j 的距離,然后給你
m 條已有道路,讓你在這個(gè)基礎(chǔ)上添加適當(dāng)?shù)牡缆罚沟盟写迩f之間都是聯(lián)通的,求添加道路的最短距
離的值。   閱讀全文

posted @ 2011-07-18 08:34 AK 閱讀(1597) | 評(píng)論 (0)編輯 收藏

2011年8月18日

頁(yè)碼計(jì)數(shù)

     摘要: 【問(wèn)題描述】

一本書的頁(yè)數(shù)為N,頁(yè)碼從1開始編起,請(qǐng)你求出全部頁(yè)碼中,用了多少個(gè)0,1,2,…,9。其中—個(gè)頁(yè)碼不含多余的0,如N=1234時(shí)第5頁(yè)不是0005,只是5。

【輸入】

一個(gè)正整數(shù)N(N≤109),表示總的頁(yè)碼。

【輸出】

共十行:第k行為數(shù)字k-1的個(gè)數(shù)。

【樣例】

count.in count.out

11 1

4

1

1

  閱讀全文

posted @ 2011-08-18 19:26 AK 閱讀(3427) | 評(píng)論 (2)編輯 收藏

2011年8月17日

HDU 1217 Arbitrage

     摘要: HDU 1217 Arbitrage
題意是說(shuō)給你N種貨幣以及,貨幣與貨幣之間的M種匯率,
讓你判斷是否存在經(jīng)過(guò)若干次貨幣的兌換使得某種貨幣的
價(jià)值大于原來(lái)本身的價(jià)值,比如所:美元:美元 = 1 : 1;
題意就是讓你判斷,在當(dāng)前的貨幣兌換率的基礎(chǔ)上,能不能
使 美元 : 美元 > 1 : 1; 利用Floyd算法即可搞定,代碼如下:  閱讀全文

posted @ 2011-08-17 09:55 AK 閱讀(1547) | 評(píng)論 (0)編輯 收藏

2011年8月16日

HDU 1029 Ignatius and the Princess IV

     摘要: HDU 1029 Ignatius and the Princess IV
給N個(gè)數(shù)字, N為奇數(shù), 輸出出現(xiàn)次數(shù)大于 N / 2 的數(shù)  閱讀全文

posted @ 2011-08-16 17:10 AK 閱讀(1456) | 評(píng)論 (0)編輯 收藏

HDU 1280 前m大的數(shù)

     摘要: HDU 1280 前m大的數(shù)
給定的N個(gè)整數(shù)序列, 兩兩求和,從大到小輸出M個(gè)和數(shù)。
因?yàn)樗姓麛?shù)不超過(guò)5000,則相加不會(huì)超過(guò)10000,可以
用哈希解決。  閱讀全文

posted @ 2011-08-16 16:40 AK 閱讀(1743) | 評(píng)論 (0)編輯 收藏

2011年7月18日

HDU 1116 Play on Words

HDU 1116 Play on Words
這個(gè)題目要運(yùn)用到歐拉路得相關(guān)知識(shí),并且也要并查集,題目說(shuō)的是:給你n個(gè)單詞,要你判斷這些單詞能不能首尾相連。
理解題目意思后,進(jìn)行轉(zhuǎn)化,輸入字符串,提取首位字母作為下標(biāo)來(lái)表示兩節(jié)點(diǎn)的出現(xiàn),以及相對(duì)應(yīng)節(jié)點(diǎn)入度和出度的增加,
轉(zhuǎn)化為并查集的應(yīng)用即可。那么從可以想象一幅由首位字母節(jié)點(diǎn)構(gòu)成的圖,當(dāng)且僅當(dāng)圖是一條歐拉回路或者歐拉通路的時(shí)候,
才能滿足題目的要求,至于歐拉回路和歐拉通路的判定可以總結(jié)為如下:
1)所有的點(diǎn)聯(lián)通
2)歐拉回路中所有點(diǎn)的入度和出度一樣。
3)歐拉通路中起點(diǎn)的入度 - 出度 = 1,終點(diǎn)的 初度 - 入度 = 1, 其他的所有點(diǎn)入度 = 出度;

有了上面這些知識(shí)點(diǎn)做鋪墊,相信理解起來(lái)就比較容易了,下面我的代碼:
 1 #include<stdio.h>   
 2 #include<string.h>   
 3 #include<math.h>   
 4 #define N 30   
 5 /*
 6 歐拉回路,所有點(diǎn)連通,并且所有點(diǎn)的入度等于出度。 
 7 歐拉通路。從原點(diǎn) S出發(fā),經(jīng)過(guò)所有點(diǎn),從終點(diǎn) t出去。 
 8 所有點(diǎn)除起點(diǎn)終點(diǎn)外的度都是偶數(shù),且出度等于入度
 9 起點(diǎn)的出度比入度大 1 
10 終點(diǎn)的入度比出度大 1 
11 */ 
12 
13 int father[N],vis[N];  
14 //father[i] 表示節(jié)點(diǎn) i 的 BOSS ! vis[i]表示節(jié)點(diǎn) i 出現(xiàn)過(guò)! 
15 int findx(int x)  
16 {  //找節(jié)點(diǎn)  x 的 BOSS ! 
17     if(father[x]!=x)  
18         father[x]=findx(father[x]);  
19     return father[x];  
20 }  
21 void merge(int a,int b)  
22 {  // 合并 節(jié)點(diǎn) a 和節(jié)點(diǎn) b ! 
23     int x,y;  
24     x=findx(a);  
25     y=findx(b);  
26     if(x!=y) father[x]=y;  
27 }  
28 int main()  
29 {  
30     int text,cnt,i,j,n,out[N],in[N],p[30],a,b;  
31     char str[1001];  
32     scanf("%d",&text);  
33     while(text--)  
34     {  
35         scanf("%d",&n);  
36         memset(out,0,sizeof(out));  
37         memset(in,0,sizeof(in));  
38         memset(vis,0,sizeof(vis));  
39         for(i=0;i<26;i++)  
40             father[i]=i;  //初始化數(shù)組 
41         while(n--)  
42         {  // 處理所給信息 ! 
43             scanf("%s",str);  
44             a=str[0]-'a';  
45             b=str[strlen(str)-1]-'a';  
46             merge(a,b);  
47             out[a]++;  
48             in[b]++;  // 記錄節(jié)點(diǎn) a 和 b的入度和出度 
49             vis[a]=1;  
50             vis[b]=1//標(biāo)記節(jié)點(diǎn) a 和 b的出現(xiàn) 
51         }  
52         for(i=0;i<26;i++)  
53             father[i]=findx(i);  //找出每個(gè)節(jié)點(diǎn)的 BOSS  
54         for(cnt=0,i=0;i<26;i++)  
55             if(vis[i] && father[i]==i)  
56                 cnt++;  // 統(tǒng)計(jì)最終 BOSS 即根節(jié)點(diǎn)的個(gè)數(shù) 。 
57         if(cnt>1)  //圖不連通   
58         {  
59             printf("The door cannot be opened.\n");  
60             continue;  
61         }  
62           
63         for(j=0,i=0;i<26;i++)  
64             if(vis[i] && out[i]!=in[i])  
65                 p[j++]=i;  //統(tǒng)計(jì)入度和出度不相等的點(diǎn)的信息 
66         if(j==0)   
67         {//歐拉回路,即環(huán)   
68             printf("Ordering is possible.\n");  
69             continue;  
70         }  
71         if(j==2 && ( out[p[0]]-in[p[0]]==1 && in[p[1]]-out[p[1]]==1  
72             || out[p[1]]-in[p[1]]==1 && in[p[0]]-out[p[0]]==1 ) )  
73         {//歐拉通路   
74             printf("Ordering is possible.\n");  
75             continue;  
76         }  
77         printf("The door cannot be opened.\n");  
78     }  
79     return 0;  
80 }  
81 




posted @ 2011-07-18 10:57 AK 閱讀(2062) | 評(píng)論 (3)編輯 收藏

HDU 1301 Jungle Roads

     摘要: HDU 1301 Jungle Roads
這個(gè)題目的意思就是說(shuō)給你n個(gè)相關(guān)點(diǎn),用A - I 來(lái)表示,然后給出n-1行,第 i 行表示從點(diǎn) i 到其他點(diǎn)的相關(guān)信息。
在給出的map的基礎(chǔ)上,要求選擇適當(dāng)?shù)穆肪€,使得所有給出的點(diǎn)都能夠到達(dá)任意其他點(diǎn),問(wèn)題規(guī)模不大,直接矩陣
存儲(chǔ),利用prim 算法搞定。  閱讀全文

posted @ 2011-07-18 09:31 AK 閱讀(1630) | 評(píng)論 (0)編輯 收藏

HDU 1233 還是暢通工程

     摘要: HDU 1233 還是暢通工程
題目意思就是給你一個(gè)有n個(gè)點(diǎn)的圖,給出n *(n-1)/ 2 條邊的信息,包括邊的端點(diǎn)和邊的長(zhǎng)度,要求
在滿足所有點(diǎn)在同一個(gè)連通分支上的前提下,選擇最短的道路來(lái)修建。典型的最小生成樹算法,同樣,問(wèn)題
規(guī)模不大,直接矩陣就可以勝任。  閱讀全文

posted @ 2011-07-18 09:20 AK 閱讀(2388) | 評(píng)論 (0)編輯 收藏

HDU 1232 暢通工程

HDU 1232 暢通工程
這個(gè)題目也是典型的最小生成樹算法的利用,不同于其他的題目就在于其它要求的是要添加的邊的最少數(shù)目,使得任意兩
點(diǎn)都有聯(lián)系,利用并查集算法 ,在題目已經(jīng)給出的map基礎(chǔ)上,統(tǒng)計(jì)兩棵樹相并的次數(shù),即使要添加的路徑的最少數(shù)目。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int father[1001], tot;//father[i] 記錄 i 的 BOSS !  
 5 //tot 統(tǒng)計(jì)最初至少需要添加的路徑數(shù)目 ! 
 6 
 7 int find(int x)
 8 {//找 到  x 的 BOSS ! 
 9     int r = x;
10     while (r != father[r]) r = father[r];
11     return r;// 
12 }
13 
14 void join(int a, int b)
15 {//將 a 和  b 的 BOSS 統(tǒng)一! 
16      int fa = find(a), fb = find(b);
17      if (fa != fb)
18      {
19         father[fa] = fb;
20         tot --// 統(tǒng)一了一次兩個(gè)陣營(yíng)的  BOSS ,所以需要添加的路徑的數(shù)目減一! 
21      }
22 }
23 
24 int main()
25 {
26     int n, m, x, y;
27     while (scanf("%d"&n), n)
28     {
29           scanf("%d"&m);
30           tot = n-1// 初始化 tot 等于 n 個(gè)點(diǎn)聯(lián)通所需要的最少邊的數(shù)目 ! 
31           father[n+1];
32           for (int i=1; i<=n; i++)father[i] = i;//初始化自己是自己的 BOSS ! 
33           
34           for (int i=1; i<=m; i++)
35           {
36               scanf("%d %d",&x, &y);
37               join(x, y);  
38           }
39           printf("%d\n",tot); //輸出在已有基礎(chǔ)上還需要的邊的數(shù)目! 
40     }
41     return 0;
42 }
43 

posted @ 2011-07-18 08:59 AK 閱讀(1783) | 評(píng)論 (0)編輯 收藏

HDU 1162 Eddy's picture

HDU 1162 Eddy's picture

這個(gè)題目也是典型的最小生成樹算法,跟之前的那個(gè)題目是差不多的,也就是說(shuō):給你n個(gè)二維平面點(diǎn),
讓你添加適當(dāng)?shù)倪叄沟盟械狞c(diǎn)都在同一個(gè)聯(lián)通分支上,也就是說(shuō)任何點(diǎn)之間都有路徑可以到達(dá)。
問(wèn)題規(guī)模不大,直接用矩陣存數(shù)據(jù),利用prim 算法就可以搞定。此時(shí)任意兩點(diǎn)之間的“權(quán)值”就是
兩點(diǎn)之間的距離。
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 #include<string.h>
 5 const double MAX = 1000000000.0
 6 struct Point
 7 {
 8        double x, y;
 9 }point[101];
10 
11 double map[101][101];
12 int v[101], n;
13 
14 double Dis(Point a, Point b)
15 {
16        return sqrt((a.x - b.x) * (a.x - b.x) +(a.y - b.y) * (a.y - b.y)); 
17 
18 
19 void Build()
20 {
21      memset(map, 0sizeof(map));
22      for (int i=0; i<n; i++)
23      {
24          for (int j=i; j<n; j++)
25          {
26              if (i == j) map[i][j] = MAX;
27              else 
28              {
29                    map[j][i] = map[i][j] = Dis(point[i], point[j]);
30              }
31          }
32      }
33 }
34 
35 void MinTree()
36 {
37      double sum = 0.0, min;
38      memset(v, 0sizeof(v));
39      v[0= 1;
40      int flag;
41      for (int i=1; i<n; i++)
42      {
43          min = MAX;
44          for (int j=0; j<n; j++)
45          {
46              if (!v[j] && map[0][j] < min)
47              {
48                 min = map[0][j];
49                 flag = j;
50              }
51          }
52          sum += min;
53          v[flag] = 1;
54          for (int j=0; j<n; j++)
55          {
56              if (!v[j] && map[0][j] > map[flag][j])
57              {
58                 map[0][j] = map[flag][j];
59              }
60          }
61      }
62      printf("%.2lf\n",sum);
63 }
64 int main()
65 {
66     while (scanf("%d"&n)!= EOF)
67     {
68           map[n][n];
69           point[n];
70           for (int i=0; i<n; i++)
71           {
72               scanf("%lf %lf"&point[i].x, &point[i].y);
73           }
74           Build();
75           MinTree();
76     }
77     return 0;
78 }
79 


posted @ 2011-07-18 08:42 AK 閱讀(1363) | 評(píng)論 (0)編輯 收藏

HDU 1102 Constructing Roads

     摘要: HDU 1102 Constructing Roads

這個(gè)題目的意思就是說(shuō),給你一個(gè)有n個(gè)村莊的地圖,map[i][j]表示從村莊 i 到村莊 j 的距離,然后給你
m 條已有道路,讓你在這個(gè)基礎(chǔ)上添加適當(dāng)?shù)牡缆罚沟盟写迩f之間都是聯(lián)通的,求添加道路的最短距
離的值。   閱讀全文

posted @ 2011-07-18 08:34 AK 閱讀(1597) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題  
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

資源連接

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            老司机久久99久久精品播放免费| 欧美精品国产一区| 国产三级精品在线不卡| 99香蕉国产精品偷在线观看| 亚洲精品五月天| 亚洲视频 欧洲视频| 亚洲福利视频一区| 一区二区三区黄色| 久久精品导航| 亚洲人线精品午夜| 久久久亚洲影院你懂的| 国产精品video| 日韩亚洲成人av在线| 久久久欧美精品| 亚洲天天影视| 欧美另类视频| 亚洲精品日韩激情在线电影| 久久久久.com| 亚洲一区二区在线免费观看视频 | 国产免费一区二区三区香蕉精| 亚洲狼人综合| 久久综合久久综合九色| 亚洲欧洲日本在线| 欧美ed2k| 久久久久久久成人| 国外成人在线| 久久综合给合| 可以免费看不卡的av网站| 国产视频丨精品|在线观看| 一本久久综合| 亚洲人体一区| 国产精品久久精品日日| 在线亚洲一区二区| 日韩视频中午一区| 欧美日韩国产探花| 日韩视频在线观看免费| 在线观看久久av| 欧美成年人视频网站| 老司机精品福利视频| 米奇777超碰欧美日韩亚洲| 亚洲精品在线三区| 国产精品久久久久久久第一福利| 亚洲午夜激情| 亚洲午夜一区二区三区| 国产精品视频不卡| 久久国产福利| 亚洲自拍高清| 亚洲高清成人| 亚洲片在线观看| 欧美视频一区二区三区| 午夜久久久久久| 欧美一级午夜免费电影| 国产精品私人影院| 另类图片国产| 欧美日韩亚洲视频| 欧美在线三区| 老司机精品视频一区二区三区| 中文日韩在线视频| 亚洲欧美精品一区| 亚洲精品一区二区三区樱花| 欧美一区三区二区在线观看| 夜夜嗨av一区二区三区网页 | 久久综合给合| 亚洲欧美高清| 欧美激情aaaa| 免费影视亚洲| 国产伪娘ts一区| 亚洲日韩视频| 亚洲成人在线免费| 欧美亚洲免费在线| 亚洲影视综合| 欧美另类在线播放| 亚洲成人在线视频播放 | 久久久欧美一区二区| 欧美日韩一级片在线观看| 久久综合给合久久狠狠色| 欧美日韩在线视频一区二区| 亚洲黄色有码视频| 一本久道久久综合中文字幕| 性欧美1819sex性高清| 亚洲在线网站| 欧美精品午夜| 欧美二区不卡| 国内外成人免费视频| 亚洲永久免费观看| 亚洲综合国产| 欧美三级午夜理伦三级中文幕 | 亚洲资源在线观看| 亚洲一区二区在线观看视频| 欧美日韩亚洲免费| 日韩午夜av| 一区二区三区精品| 欧美日韩123| 亚洲精品一品区二品区三品区| 亚洲茄子视频| 免费永久网站黄欧美| 欧美不卡三区| 亚洲六月丁香色婷婷综合久久| 欧美成人综合网站| 亚洲人成高清| 亚洲视频精品在线| 欧美四级在线| 亚洲免费一在线| 久久精品视频网| 狠狠做深爱婷婷久久综合一区| 久久精品一区四区| 欧美1区视频| 亚洲精品一区二区三区蜜桃久| 欧美连裤袜在线视频| 亚洲午夜小视频| 久久视频在线看| 亚洲日本无吗高清不卡| 欧美三级日韩三级国产三级| 亚洲综合大片69999| 毛片基地黄久久久久久天堂| 亚洲三级视频| 国产精品高潮呻吟久久| 精品福利电影| 久久久噜噜噜久久中文字免| 亚洲国产婷婷香蕉久久久久久99| 99国产精品一区| 国产精品国色综合久久| 欧美在线观看视频在线| 亚洲第一区色| 午夜精品久久久久99热蜜桃导演| 国外精品视频| 欧美日韩在线免费| 久久精品视频播放| 99视频精品| 欧美暴力喷水在线| 午夜国产精品影院在线观看| 尤物yw午夜国产精品视频明星| 欧美国产高清| 久久www免费人成看片高清| 亚洲日韩成人| 理论片一区二区在线| 亚洲一区综合| 亚洲国产清纯| 国产一区在线播放| 欧美视频官网| 免费永久网站黄欧美| 欧美在线视频日韩| 在线亚洲观看| 亚洲国产日韩一级| 久久久午夜精品| 亚洲欧美综合国产精品一区| 亚洲精品一区二区三区婷婷月| 亚洲精品孕妇| 欧美日精品一区视频| 欧美在线黄色| 欧美国产日韩在线| 国内精品久久久久久| 91久久精品一区二区别| 欧美视频日韩视频| 久热精品视频在线免费观看| 中文在线资源观看网站视频免费不卡 | 久久久亚洲精品一区二区三区| 一个色综合导航| 亚洲国产精品成人综合| 国产精品腿扒开做爽爽爽挤奶网站| 欧美国产日韩一区二区三区| 久久精品网址| 亚洲欧美日韩一区在线观看| 一本久道久久综合婷婷鲸鱼| 欧美激情国产精品| 久久免费国产精品1| 欧美一站二站| 午夜精品久久| 亚洲一区视频在线| 亚洲午夜视频在线| 亚洲最新在线| 日韩视频永久免费观看| 亚洲国产清纯| 亚洲日本精品国产第一区| 亚洲成人在线视频网站| 亚洲第一福利在线观看| 激情五月综合色婷婷一区二区| 国产精品网红福利| 国产精品福利影院| 国产精品一卡| 国产精品尤物福利片在线观看| 欧美丝袜一区二区三区| 国产精品福利片| 国产欧美一区二区三区另类精品 | 久久精品99国产精品| 午夜精品国产| 亚洲欧美日韩中文在线制服| 亚洲网站在线| 午夜精品国产精品大乳美女| 欧美一区亚洲一区| 久久噜噜亚洲综合| 欧美 日韩 国产在线| 免费成人黄色片| 欧美高清影院| 欧美少妇一区| 国产一区美女| 91久久国产综合久久91精品网站| 亚洲精品国产无天堂网2021| 日韩亚洲欧美高清| 亚洲欧美中文日韩v在线观看|