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

隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
數(shù)據(jù)加載中……

SGU 120 - 129 解題報告

120 Archipelago                                                計算幾何:射線旋轉(zhuǎn)
121 Bridges painting                                         圖論:染色問題
122 The Book                                                    圖論:哈密爾頓回路
123 The Sum                                                     遞推
124 Broken Line                                                計算幾何:線段判交
125 shtirlits                                                       搜索:深度優(yōu)先搜索
126 boxes                                                          初等數(shù)論
127 Telephone directory                                   排序
128 Snake                                                          排序 + HASH
129 Inheritance                                                 計算幾何:凸包+線段判交


120 Archipelago

       計算幾何:射線旋轉(zhuǎn)

       題意:需要求一個正多邊形的N個點,但是給出的只有N和某兩個點的坐標(biāo)。

       題解:核心思想是根據(jù)給定的那兩個點的坐標(biāo)確定多邊形中心點的坐標(biāo),這樣邊長也確定了,然后利用中心點到其中一個點的射線的旋轉(zhuǎn)求出所有的點坐標(biāo)。

       1) 正多邊形的中心點一定在任意兩個頂點的連線的中垂線上,然后根據(jù)已知點的相對關(guān)系,算出他們和中心點的夾角,利用這兩個條件就可以求出中心點的坐標(biāo)了。

       2) 然后就是要求某個點繞中心點旋轉(zhuǎn)360/N度后的坐標(biāo)了,做N-1次旋轉(zhuǎn)操作就能求出所有的頂點了。旋轉(zhuǎn)可以通過解方程求解:

       令原單位向量I,旋轉(zhuǎn)alpha角度后的單位向量Ia,其中Ialpha已知,Ix是我們需要求的。那么有以下兩個方程:

       1) I.x * Ia.x + I.y * Ia.y = cos( alpha )

       2) Ia.x2 + Ia.y2 = 1

       1)中的Ia.xIa.y表示代入方程2),利用一元二次求根公式可以求得兩個解,然后算出Ia.x,但是解肯定只有一個,可以用叉乘關(guān)系排除掉另外一個解。

121 Bridges painting

      圖論:DFS構(gòu)造


題意:對于一個圖,給定它的邊和點,現(xiàn)在要求給邊染色(黑色或者白色)。問能不能構(gòu)造一種染色方法,使得所有的度數(shù)大于1的點的邊都能有至少有一條邊為黑色、至少有一條邊為白色。

題解:首先考慮什么情況下是不可能染色成功的;如圖1所示,對于下面這個圖,每個點的頂點度數(shù)為2,所以從任意一條邊開始染色,相鄰邊必然為相反色,由于存在奇環(huán),導(dǎo)致必然有一個點的兩條邊的顏色相同,染色失敗。

然后再來考慮怎么將這個圖挽救回來,其實這個圖失敗的點只有一個,如果在那個點上再加一條邊,那么整個圖貌似就可以認(rèn)為染色成功了。

于是我們進(jìn)一步考慮是不是度數(shù)為奇數(shù)的點造就了這一切:

度數(shù) = 1,該點所在邊可以隨便染色;

度數(shù) > 1,說明必然存在環(huán);

如果是偶數(shù)環(huán),那么經(jīng)過一系列的交錯染色,最后必然能夠在該結(jié)點上收獲兩條顏色不一樣的邊;

如果是奇數(shù)環(huán),在染色完畢后,必然還有一條邊未被染色(因為度數(shù)為奇數(shù)),可以大膽的將它染成不同的顏色;

所以對于度數(shù)為奇數(shù)的點,采用交錯染色,一定可以將圖染色成功;

如圖,可以對于所有奇度數(shù)頂點作為根進(jìn)行一次dfs,按照編號順序進(jìn)行深度優(yōu)先遍歷,先遍歷到的是1號,標(biāo)記為黑色,然后將它的第一個兒子標(biāo)記為白色,遍歷完畢,將第二個兒子標(biāo)記為黑色(交錯染色),即每次更換結(jié)點的時候就將顏色取反,當(dāng)我們遍歷到邊6的時候發(fā)現(xiàn)7是一條后向邊,于是回到了根結(jié)點,完成遍歷。

利用同樣方法,將所有度數(shù)為奇數(shù)的點進(jìn)行一次遍歷,然后再將度數(shù)為偶數(shù)的點進(jìn)行相同的遍歷(因為可能這不是一個連通圖,所以如果度數(shù)為偶數(shù)的點所在的圖集合中有奇數(shù)環(huán),如圖1的情況,那么必然無解)。

遍歷完畢,需要對每個點判斷是否存在不合法的頂點(邊數(shù)大于1,并且只有一種染色),如果合法,說明所有邊都被染色了,輸出解即可。


1


2

122 The book

      哈密爾頓回路問題:Ore定理 + 構(gòu)造

題意:給定N(N <= 1000)個點連成的圖,每個點度數(shù)大于等于(N+1)/2,求這個圖的一條哈密爾頓回路。

題解:

1)首先假設(shè)已經(jīng)得到了一個環(huán)RR的頂點個數(shù)為r),那么在未選到環(huán)內(nèi)的點集R’中必然能夠找到某個點k和環(huán)R中其中一個點j有邊相連,假設(shè)沒有邊相連,那么環(huán)R和環(huán)外的點集R’互不連通,為兩個連通分量,和題意相左(因為每個點的度數(shù)大于等于(N+1/2,圖論書上有證明,這肯定是一個連通圖,故不再累述),故R’中必然存在至少一個點kR中點j相連,于是將那個點j連接到k上,這樣就變成了一個長度為r+1的鏈。

2)這個鏈的頭為s,尾為k,長度為r+1,不斷在剩下的點集中找點連接到sk上,并且不斷更新sk(連接到頭上,連接的點就變成了s,連接到尾上,連接的點就變成了k),直到找到一個極大連通子鏈(不能再在剩下的點中找到點連接到鏈的兩端了)。

3)由于k和剩下點集R’沒有點相連,所以我們只能在這條長鏈上找和k相連的點t(因為一定可以找到,為什么呢?k本身不就有個鏈內(nèi)的點連著嘛,不然它就是個孤立點了)。所以找到(k , t)相連,并且(s, t+1) 相連,然后刪掉(t, t+1)這條邊,就能夠得到一個新的環(huán)了,如果此時環(huán)的長度為n就結(jié)束了,否則繼續(xù)1)。

 

圖3

123 The sum

      遞推


       題意:求斐波那契數(shù)列的第N(N <= 40)項。

       題解:__int64數(shù)組預(yù)處理即可。


124 Broken line

      計算幾何: 線段判交


       題意:在平面上有一些閉合線段(沒有自交和相互交叉),判斷給定的點P是否在這個閉合線段內(nèi)。

       題解:其實就是判斷一個點是否在多邊形內(nèi);

       首先,虛擬出一個無窮遠(yuǎn)的點Q,然后用PQ和每個閉合線段去做相交檢測(兩線段判交在黑書上有詳盡的解釋,不再累述)。

       1) 如果P在某條線段上,輸出BORDER

       2) 如果PQ和所有線段交點個數(shù)為奇數(shù),說明在多邊形內(nèi),輸出INSIDE

       3) 如果PQ和所有線段交點個數(shù)為偶數(shù),說明在多邊形外,輸出OUTSIDE

 

125 Shtirlits

      深度優(yōu)先搜索 + 剪枝

 

       題意:給定一個矩陣B (3X3),B[i][j]表示A[i][j]四周比它大的數(shù)的個數(shù),求滿足條件的A。

       題解:枚舉A[i][j]的每個數(shù)字,數(shù)字的范圍為 [0,9]。復(fù)雜度109,所以需要進(jìn)行一定的剪枝。

       a)   首先,可以肯定這B[i][j]中一定會至少有一個0,因為總有一個數(shù)沒有比它大的數(shù)(高處不勝寒啊~~)。對于B[i][j] == 0的格子,將A[i][j]設(shè)為最大值9一定不會錯,所以復(fù)雜度至少可以降到 108 了。

       b)   A的每個非9的格子標(biāo)記為-1,然后對每個格子進(jìn)行枚舉,枚舉范圍為 [ 0, 8 ], 因為B[i][j]為四周比它大的數(shù)的個數(shù), 如果A[i][j]==9,那么B[i][j]必須為0,復(fù)雜度降至 98

       c)   每次枚舉完畢,進(jìn)入下一個數(shù)的枚舉之前,進(jìn)行全局的檢測,對于每個格子統(tǒng)計以下數(shù)據(jù):

            i)    已經(jīng)枚舉的鄰居格子      H

            ii)   總共有多少個鄰居格子   T

             iii)   比自己大的鄰居格子       B

     然后進(jìn)行篩選,如果

          x) 比當(dāng)前格子大的鄰居數(shù)已經(jīng)超出限定值, B > B[i][j]

          y) 比當(dāng)前格子大的鄰居數(shù) + 剩余未知鄰居數(shù) < 給定比它大的鄰居數(shù), B + (T-H) < B[i][j]

     均為無效解,無需往下枚舉,回溯。

       d)   直到所有數(shù)枚舉完畢,輸出解即可。

 

126 Boxes

      初等數(shù)論

 

       題意:對于給定的AB,

              如果A > B, 則狀態(tài)變?yōu)?/span> (A-B, 2*B)

              如果A < B, 則狀態(tài)變?yōu)?/span> (2*A, B-A)

              當(dāng) A == B 時,結(jié)束。

              要求輸出這個情況是否存在,如果存在輸出變換的次數(shù),不存在輸出-1。

 

       題解:根據(jù)題意,可以得出一些簡單的推論:

          a) 當(dāng)A == 0 或者 B == 0 答案為 0

          b) 最后A == B的時候,必定是K = (A+B)/2,所以當(dāng)A+B為奇數(shù)時答案不存在。

          c) 定義最后的狀態(tài)二元組為 (K, K),

                倒數(shù)第二次的操作必定為 (3K/2,K/2)  或者(K/2,3K/2)                                                                                                 (2)

                倒數(shù)第三次的操作必定為 (7K/4, K/4) 或者 (3K/4, 5K/4) 或者 (5K/4, 3K/4) 或者 (K/4, 7K/4)                                         (4)

                倒數(shù)第四次操作(15K/8,K/8)...                                                                                                                                   (8)

                倒數(shù)第i次操作 ( (2(i-1)-1)/2(i-1) * K, 1/2(i-1) * K ) ...                                                                                                    (2(i-1) )

 

          d) AB的組合必定在這些情況中找。

              于是定義 A = L1 / 2n * K,  B = L2 / 2n * K  (其中K = (A+B)/2, L1,L2為奇數(shù),并且(L1+L2) = 2(n+1))

             得:

                 L1 = 2n * (A/K)

                 L2 = 2n * (B/K)

        A = 2a * A', K = 2k * K'

        則有 L1 = 2(n+a-k) * A'/K' 為奇數(shù),所以n+a-k = 0,并且要保證A' mod K' == 0,A K 都為已知,則可以計算出 a 、A'k、K',最終的步數(shù)就是k-a+1。

        需要注意特殊情況:AB0的情況,以及A+B為奇數(shù)的情況。


127 Telephone directory

      將所有電話號碼按首字母排序,統(tǒng)計每個首字母出現(xiàn)的次數(shù)Ai, Sum{ (Ai + K - 1 ) / K } + 2 就是答案。


128 Snake

       想法題


       題意:給定N4<=N<=10000)個整數(shù)點,問能不能組出一個多邊形,滿足以下條件:

       a) 閉合;

       b) 所有的點都是多邊形上的點,并且只能被用一次;

       c) 任何兩個連續(xù)的線段需要組成一個90度的直角;

       d) 多邊形的所有邊都要平行于坐標(biāo)軸;

       e) 多邊形不能存在自交;

       f) 多邊形的周長要滿足最小;

       題解:

       1) 對于輸入的點保存兩份數(shù)組PX、PY,并且記錄每個點在原數(shù)組的下標(biāo)index;

       2) PX進(jìn)行X優(yōu)先排序,對PY進(jìn)行Y優(yōu)先排序;

       3) PX中序號為奇數(shù)的點PX[i]和它的下一個點PX[i+1]進(jìn)行y值的判斷,如果這兩個點的y值不相等,那么說明這個點無法加入多邊形中(PX[i]無法配對,被孤立了),無解。否則PX[i].indexPX[i+1].index必然有一條邊(可以用鄰接表來存邊關(guān)系,因為最后求的是一個多邊形,所以每個點有且僅有兩條邊,其實就是一個哈密爾頓回路)。

          并且加PX[i+1].x - PX[i].index 累加到答案ans中;

       4) PY中的點作和3)一樣的處理,保存邊的關(guān)系,但是這里需要判斷一種自交的情況,如圖1中,3)操作完畢后,產(chǎn)生三條邊(1,1) - (2,1)  (1,2) -(3, 2)   (2,3) - (3,3);那么在進(jìn)行操作4)的時候(1,1)-(1,2) (3,2) - (3, 3)都是沒問題的,唯獨 (2,1) - (2,3) 先前的邊 (1,2) -(3, 2) 會產(chǎn)生自交,違反了e這條規(guī)則,所以需要檢測這種情況是否存在,如果存在,那么必然無解;具體檢測方法很多,不再累述;


1

       5) 進(jìn)過3)4)后,再進(jìn)行一次連通性判斷即可,以防圖2的情況。


2

129 Inheritance

      解析幾何 + 凸包 + 線段判交

         題意:給定一個多邊形和若干線段,這個多邊形內(nèi)任意兩點連線不會和多邊形邊界相交,分別求這些線段在多邊形內(nèi)部的長度。

         題解:首先,根據(jù)“多邊形內(nèi)任意兩點連線不會和多邊形邊界相交”可以肯定這是個凸多邊形,于是問題就轉(zhuǎn)化成了求某條線段和凸多邊形相交后線段在多邊形內(nèi)部分的長度。

         由于給定的點是亂序的,所以最簡單的方法是求這些點集的一個凸包,構(gòu)造出一個按點排序的多邊形,相鄰兩點連線為原多邊形的一條邊。

那么枚舉每條邊和給定線段的相交情況:

         1) 不相交(平行),繼續(xù)判斷下一條邊;

         2) 共線,直接跳出枚舉,(由于是凸多邊形,改線段肯定不可能在多邊形內(nèi));

         3) 相交,將這個交點存入集合S;

         將原線段的兩個端點存入集合S,對集合S的點進(jìn)行x坐標(biāo)遞增排序(x相同時y坐標(biāo)遞增排序),然后枚舉相鄰兩個點的中點,判斷是否在在原多邊形內(nèi),如果在,那么將這兩個相鄰點練成的線段的長度累加到最后的答案中。如圖1為兩個交點的情況。


1




posted on 2014-06-17 19:07 英雄哪里出來 閱讀(1666) 評論(3)  編輯 收藏 引用 所屬分類: Sgu 題解

評論

# re: SGU 120 - 129 解題報告  回復(fù)  更多評論   

遍歷完畢,需要對每個點判斷是否存在不合法的頂點(邊數(shù)大于1,并且只有一種染色),如果合法,說明所有邊都被染色了,輸出解即可www.ssnz88.net
2014-06-22 20:45 | 旗袍女裝

# re: SGU 120 - 129 解題報告  回復(fù)  更多評論   

將原線段的兩個端點存入集合S,對集合S的點進(jìn)行x坐標(biāo)遞增排序(x相同時y坐標(biāo)遞增排序),然后枚舉相鄰兩個點的中點,判斷是否在在原多邊形內(nèi),如果在,那么將這兩個相鄰點練成的線段的長度累加到最后的答案中。如圖1為兩個交點的情況。www.ssnz88.net
2014-06-27 18:09 | 旗袍

# re: SGU 120 - 129 解題報告  回復(fù)  更多評論   

于給定的點是亂序的,所以最簡單的方法是求這些點集的一個凸包,構(gòu)造出一個按點排序的多邊形,相鄰兩點連線為原多邊形的一條邊。

那么枚舉每條邊和給定線段的相交情況:天天好逼網(wǎng)www.ssnz88.net
2014-09-29 21:09 | 天天好逼網(wǎ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>
            性色一区二区三区| 久久av一区二区三区漫画| 欧美精品啪啪| 一区二区三区免费在线观看| 亚洲欧美日韩精品| 国产一区二区三区久久精品| 久久这里有精品视频| 亚洲区国产区| 亚洲一二三区在线| 国产三级精品三级| 欧美xx69| 亚洲一区在线直播| 欧美成人免费网| 中文亚洲欧美| 国内精品久久久久影院薰衣草 | 国产精品久久久久久久久借妻| 香蕉久久夜色精品国产| 欧美国产一区二区| 亚洲一区二区三区中文字幕在线| 国产一区二区高清不卡| 欧美精品在线一区| 欧美诱惑福利视频| 亚洲激情欧美| 久久久九九九九| 亚洲午夜伦理| 亚洲成色www久久网站| 欧美性事在线| 欧美高清在线一区| 欧美一区二区视频97| 日韩亚洲一区二区| 你懂的国产精品永久在线| 亚洲欧美日韩国产综合| 亚洲欧洲精品一区二区三区波多野1战4 | 国产一区二区三区av电影| 欧美经典一区二区| 久久精品夜色噜噜亚洲aⅴ| 日韩天堂在线观看| 欧美成人一二三| 久久精品国产视频| 亚洲香蕉网站| 亚洲精品自在在线观看| 激情久久久久| 国产欧美日韩在线观看| 欧美日精品一区视频| 久久中文在线| 久久成人综合网| 亚洲欧美国产精品桃花| 91久久国产自产拍夜夜嗨| 蜜臀av一级做a爰片久久| 午夜伦理片一区| 一区二区三区精品| 亚洲精品视频在线观看免费| 一区二区在线观看视频| 国产欧美日韩亚洲精品| 欧美四级电影网站| 欧美色偷偷大香| 欧美啪啪一区| 欧美日韩国产片| 欧美高清成人| 欧美国产视频日韩| 欧美成人免费播放| 久久国产精品99久久久久久老狼 | 一本色道久久综合狠狠躁篇怎么玩| 亚洲午夜精品国产| 亚洲精品国产欧美| 亚洲国产精品激情在线观看| 欧美成人国产va精品日本一级| 久久精品国产综合| 欧美一区不卡| 久久九九久久九九| 久久久久久综合网天天| 欧美综合国产| 久久久99久久精品女同性| 久久精品欧美日韩| 久久亚洲一区二区三区四区| 久久永久免费| 欧美风情在线| 亚洲精品视频免费观看| 日韩一区二区电影网| 一区二区三区四区五区精品视频 | 亚洲国产高清在线| 亚洲国产女人aaa毛片在线| 亚洲国产精品专区久久| 亚洲欧洲精品一区二区| 一区二区欧美在线观看| 亚洲免费中文| 久久久之久亚州精品露出| 久久综合久久综合久久综合| 欧美国产日韩二区| 亚洲日本欧美| 亚洲一区亚洲| 久久漫画官网| 欧美日韩国产一中文字不卡| 国产精品久在线观看| 国内精品美女av在线播放| 亚洲国产精品久久久久| 亚洲性xxxx| 久久久欧美一区二区| 欧美激情第二页| 一区二区欧美国产| 欧美在线综合| 欧美精品自拍| 国产一区二区三区直播精品电影| 亚洲国产视频一区| 亚洲一区二区三区在线看 | 国产精品亚洲第一区在线暖暖韩国| 国产日韩精品一区二区三区在线| 在线观看国产精品淫| 亚洲深夜福利视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲二区视频| 香港久久久电影| 欧美激情成人在线| 国产视频在线观看一区| 一本久道综合久久精品| 久久久午夜视频| 99国产精品久久久久久久| 久久精品国产免费看久久精品| 欧美国产日韩免费| 国产一区二区三区日韩| 宅男噜噜噜66国产日韩在线观看| 久久综合给合久久狠狠色| 一本久道久久综合婷婷鲸鱼| 久久久久免费观看| 国产精品午夜国产小视频| 亚洲精品美女免费| 久久―日本道色综合久久| 一区二区三区黄色| 欧美成人在线免费观看| 国外视频精品毛片| 午夜久久久久久| 日韩视频在线观看国产| 免费不卡视频| 精品999成人| 久久精品国产亚洲高清剧情介绍| 9i看片成人免费高清| 欧美激情成人在线视频| 在线观看国产日韩| 久久免费视频网| 午夜欧美不卡精品aaaaa| 欧美午夜大胆人体| 一本一本久久| 亚洲国产美女| 蜜桃av综合| 亚洲国产精品久久精品怡红院| 久久免费视频这里只有精品| 亚洲欧美日韩一区二区在线| 欧美先锋影音| 亚洲在线黄色| 99在线热播精品免费99热| 欧美人与禽猛交乱配| 亚洲毛片av| 亚洲精品你懂的| 久久人人超碰| 在线精品视频一区二区| 久久婷婷国产综合国色天香| 欧美在线免费一级片| 国产亚洲欧美另类中文| 久久久国产午夜精品| 欧美一区日本一区韩国一区| 国产欧美亚洲一区| 久久久久久久综合日本| 久久精品国产亚洲高清剧情介绍| 国产亚洲综合精品| 久久综合九色九九| 老司机午夜精品视频在线观看| 亚洲国产欧美日韩精品| 亚洲国产精品精华液2区45| 欧美韩日一区二区| 亚洲午夜未删减在线观看| 99热在这里有精品免费| 国产精品久久网| 久久精品盗摄| 久久夜色精品国产亚洲aⅴ| 亚洲精品久久视频| 99re6这里只有精品视频在线观看| 欧美午夜女人视频在线| 久久福利资源站| 久久男女视频| 中文网丁香综合网| 亚洲一区自拍| 亚洲大胆视频| 日韩亚洲一区在线播放| 国产视频一区在线观看一区免费 | 亚洲国产精品久久精品怡红院| 欧美日本精品一区二区三区| 午夜久久久久久| 久久综合福利| 亚洲一区二区三区在线观看视频| 亚洲欧美在线免费观看| 在线欧美日韩国产| 亚洲理论在线观看| 国产亚洲欧美一区二区三区| 亚洲电影免费观看高清| 国产精品v片在线观看不卡| 久久一综合视频| 欧美日韩99| 久久天天综合| 欧美性感一类影片在线播放 | 在线亚洲免费|