【轉載】ACM計算幾何題目推薦

一。基礎題目 
1.1 有固定算法的題目 

A, 最近點對問題
最近點對問題的算法基於掃描線算法。
ZOJ 

   2107    Quoit Design    典型最近點對問題
POJ    3714    Raid    變種最近點對問題

B,最小包圍圓
最小包圍圓的算法是一種增量算法,期望是O(n)。
ZOJ    1450    Minimal Circle  
HDU    3007    Buried memory  

C,旋轉卡殼
POJ 3608    Bridge Across Islands    旋轉卡殼解兩凸包最小距離
POJ 2079    Triangle        旋轉卡殼計算平面點集最大三角形

1.2 比較簡單的題目 
HDU    3264    Open-air shopping malls ,圓面積相交問題,如果用二分法做的話不難
CII 3000 Tree-Lined Streets,幾何+貪心   
CII 4676 Geometry Problem,模板題   
HDU 3272 Mission Impossible,枚舉+鏡面反射思想
POJ 3334    Connected Gheeves,二分答案,面積判定
POJ 1819    Disks,模擬一下   
CII 3905 Meteor,貌似還是比較簡單
ZOJ 2589 Circles,平面圖的歐拉定理,圓的相交
POJ 2194 Stacking Cylinders,向量旋轉


二。經典算法 

2.1 三角剖分 
三角剖分這個東西貌似去年流行了一下,高校聯賽時某U連續出了兩次。實際上對多邊形進行三角剖分是一個很常見的算法思想,因爲三角形是一個比較簡單的凸多邊形,可以對兩個三角形比較容易地求公共面積,這也是三角剖分最常見的用途。對這個算法進行擴展,就可以求兩個簡單多邊形的面積交了。主要是理解有向面積的概念。

第一類是圓與三角形的相交,主要做法是分情況討論。
POJ    3675    Telescope    三角形剖分,圓與三角形的交
POJ    2986    A Triangle and a Circle    三角形剖分,圓與三角形的交
ZOJ   2675    Little Mammoth    三角形剖分,圓與三角形的交

第二類是多邊形與多邊形相交。
HDU    3060    Area2    簡單多邊形面積並,三角剖分

三角形剖分的另一種變種是梯形剖分,應用起來稍有侷限性,但是比三角形剖分好寫。
POJ    3148    ASCII Art    多邊形梯形剖分,半平面交

多邊形的重心問題,也是三角形剖分的應用:
CII      4426    Blast the Enemy!

2.2 極角排序 
顧名思義,極角排序一般就是有一個圓心的問題,將平面上各個點按照與圓心極角進行排序。然後就可以在線性掃描之中解決一些統計問題。不過這類問題就稍稍超出計算幾何範疇了。

UVA    11696 Beacons    頗爲經典的極角排序的統計問題,記得darkgt大牛有一篇文章提到這個題目。
CII 4064 Magnetic Train Tracks,極角排序的統計問題,補集思想。
UVA    11704 Caper pizza
POJ 2280    Amphiphilic Carbon Molecules,極角排序相當巧妙地解決了這個問題。


2.3 掃描線算法
 
掃描線算法,需要使用到平衡樹輔助,寫起來比較複雜(對於本菜而言)。關於平衡樹,我建議是直接使用STL的set或map。所以你需要掌握一些C++的知識,才能夠看懂一份使用了map與set的代碼。當年學習OI牛的代碼我看得很糾結。不過只要理解了“事件點”這一個概念後就比較好辦了。

HDU    3124    Moonmist        二分+掃描線。最近圓對,不存在改編最近點對的方法。不過當時數據弱,很多人亂搞過了
POJ    2927    Coneology        平衡樹+掃描線,與上題類似。

下面兩個題目都是關於多邊形的掃描線算法,關於平面上許多凸多邊形套了多少層的問題。
CII    4125    Painter ,這個是Final題,比較簡單,是判斷三角形嵌套層數的。
UVA        11759    IBM Fencing,上題是三角形,這題是多邊形,稍稍難了一點。不過理解好掃描線算法的話應該沒有問題。


2.4 其他題目 
POJ    3528 Ultimate Weapon,模板化的三維凸包。知道幾個三維有向體積的概念即可比較容易理解三維凸包的算法。三維凸包算法又是一種增量算法。


三。不確定算法/極值問題 
POJ 3301    Texas Trip    ,算是一種模擬退火求極值的問題,通過平面旋轉找到最佳答案。
SPOJ 4409 Circle vs Triangle(AREA1),也是模擬退火
UVA 11562 Hard Evidence,應用三分極值法求極值。

四。傳統幾何、公式題
 

UVA有一個名叫Shahriar Manzoor喜歡出這些題目,喜歡這類題目的同志可以研究一本名叫《近代歐式幾何學》的書。不過這些題目一般中學幾何知識能夠解決。
CII 4413    Triangle Hazard,梅涅勞斯定理,想不到SCNU校賽出到了
UVA     11524    InCricle,三角形內切圓性質聯立海倫公式
CII 4714    In-circles Again,還是公式推導
POJ    2208 Pyramids,歐拉四面體公式

五。幾何結合其他算法,麻煩題 
轉自:
http://www.cppblog.com/zzfmars/articles/121794.html
HDU    2297 Run,百度杯的題目,利用到了zzy的半平面交的極角排序思想。
CII 4448 Conduit Packing,問一個大圓能否放下四個小圓。頗爲變態的Final題,算法都很基礎,就是二分一個答案,枚舉兩個已知圓,求與已知的兩圓公切的第三個圓,枚舉放置的位置……關鍵是不好想。
CII 4510 Slalom 幾何+最短路
UVA    11422 Escaping from Fractal Bacterium    ,麻煩題,主要還是向量旋轉。
HDU    3228 Island Explorer,利用了最小生成樹的性質。
CII 4499 Camera in the Museum,有關圓形處理的,很不錯的題目。
CII 2395 Jacquard Circuits,Pick公式的應用
POJ 3747 Scout YYF II,又是一個幾何問題,需要猜想一下。
POJ 3336 ACM Underground,幾何預處理,並查集
CII 4428 Solar Eclipse,也是不錯的題目,涉及圓的問題
CII 4206 Magic Rings,dancing links解重複覆蓋問題,二分,百度杯也有個類似的題目。
POJ 1263    Reflections,與下面一個題目都是一類光線在球面上反射問題。解決方法是解析幾何,參數方程,向量旋轉等等。
CII 4161 Spherical Mirrors,上面題目的三維版本。
POJ 3521 Geometric Map,複雜的預處理,可以用於自虐
CII 3270 Simplified GSM Network    雖然有着V圖的模型,但是規模小,所以無須出動V圖算法,用半平面交即可。變態級的V圖算法可以諮詢三鮮教主。
CII 4617 Simple Polygon,平面上有一堆點,叫你用一筆畫把這些點連起來,連成一個閉合的簡單多邊形,線不允許出現相交。改造一下凸包算法即可。

當然,除了上述的題目外,還有許多比較精彩的計算幾何題目等待大家發掘。

posted @ 2010-10-07 22:30 UESTC_Opera 閱讀(248) 評論(0) 編輯

contest3

1:並查集 poj1417
2:雙聯通分量 poj 2942
3:A*/IDA* poj 3460
4:字符串 poj 1229
5:burnside定理polya計數法 poj 2888
6:網絡流poj 1637
7:網絡流poj 1815
8:費用流poj 3680
9:DP優化hdu 3669
10:數論poj 2992
11:博弈 hdu1907
12:幾何:hdu3239

posted @ 2010-10-05 17:28 UESTC_Opera 閱讀(41) 評論(0) 編輯

【轉載】博弈題目總結

有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個
人輪流從堆中取物體若干,規定最後取光物體者取勝。這是我國民間很古老的一個遊戲
,別看這遊戲極其簡單,卻蘊含着深刻的數學原理。下面我們來分析一下要如何才能夠
取勝。

(一)巴什博奕(Bash Game):只有一堆n個物品,兩個人輪流從這堆物品中取物,規
定每次至少取一個,最多取m個。最後取光者得勝。

    顯然,如果n=m+1,那麼由於一次最多隻能取m個,所以,無論先取者拿走多少個,
後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現瞭如何取勝的法則:如果
n=(m+1)r+s,(r爲任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走
k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的
取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。
    這個遊戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報一個,最多報十
個,誰能報到100者勝。
(二)威佐夫博奕(Wythoff Game):有兩堆各若干個物品,兩個人輪流從某一堆或同
時從兩堆中取同樣多的物品,規定每次至少取一個,多者不限,最後取光者得勝。

    這種情況下是頗爲複雜的。我們用(ak,bk)(ak ≤ bk ,k=0,1,2,…,n)表示
兩堆物品的數量並稱其爲局勢,如果甲面對(0,0),那麼甲已經輸了,這種局勢我們
稱爲奇異局勢。前幾個奇異局勢是:(0,0)、(1,2)、(3,5)、(4,7)、(6,
10)、(8,13)、(9,15)、(11,18)、(12,20)。

    可以看出,a0=b0=0,ak是未在前面出現過的最小自然數,而 bk= ak + k,奇異局勢有
如下三條性質:

    1。任何自然數都包含在一個且僅有一個奇異局勢中。
    由於ak是未在前面出現過的最小自然數,所以有ak > ak-1 ,而 bk= ak + k > ak
-1 + k-1 = bk-1 > ak-1 。所以性質1。成立。
    2。任意操作都可將奇異局勢變爲非奇異局勢。
    事實上,若只改變奇異局勢(ak,bk)的某一個分量,那麼另一個分量不可能在其
他奇異局勢中,所以必然是非奇異局勢。如果使(ak,bk)的兩個分量同時減少,則由
於其差不變,且不可能是其他奇異局勢的差,因此也是非奇異局勢。
    3。採用適當的方法,可以將非奇異局勢變爲奇異局勢。

    假設面對的局勢是(a,b),若 b = a,則同時從兩堆中取走 a 個物體,就變爲了
奇異局勢(0,0);如果a = ak ,b > bk,那麼,取走b  – bk個物體,即變爲奇異局
勢;如果 a = ak ,  b < bk ,則同時從兩堆中拿走 ak – ab – ak個物體,變爲奇異局
勢( ab – ak , ab – ak+ b – ak);如果a > ak ,b= ak + k,則從第一堆中拿走多餘
的數量a – ak 即可;如果a < ak ,b= ak + k,分兩種情況,第一種,a=aj (j < k)
,從第二堆裏面拿走 b – bj 即可;第二種,a=bj (j < k),從第二堆裏面拿走 b – a
j 即可。

    從如上性質可知,兩個人如果都採用正確操作,那麼面對非奇異局勢,先拿者必勝
;反之,則後拿者取勝。

    那麼任給一個局勢(a,b),怎樣判斷它是不是奇異局勢呢?我們有如下公式:

    ak =[k(1+√5)/2],bk= ak + k  (k=0,1,2,…,n 方括號表示取整函數)

奇妙的是其中出現了黃金分割數(1+√5)/2 = 1。618…,因此,由ak,bk組成的矩形近
似爲黃金矩形,由於2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若a=[
j(1+√5)/2],那麼a = aj,bj = aj + j,若不等於,那麼a = aj+1,bj+1 = aj+1
+ j + 1,若都不是,那麼就不是奇異局勢。然後再按照上述法則進行,一定會遇到奇異
局勢。

(三)尼姆博奕(Nimm Game):有三堆各若干個物品,兩個人輪流從某一堆取任意多的
物品,規定每次至少取一個,多者不限,最後取光者得勝。

    這種情況最有意思,它與二進制有密切關係,我們用(a,b,c)表示某種局勢,首
先(0,0,0)顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是
(0,n,n),只要與對手拿走一樣多的物品,最後都將導致(0,0,0)。仔細分析一
下,(1,2,3)也是奇異局勢,無論對手如何拿,接下來都可以變爲(0,n,n)的情
形。

    計算機算法裏面有一種叫做按位模2加,也叫做異或的運算,我們用符號(+)表示
這種運算。這種運算和一般加法不同的一點是1+1=0。先看(1,2,3)的按位模2加的結
果:

1 =二進制01
2 =二進制10
3 =二進制11 (+)
———————
0 =二進制00 (注意不進位)

    對於奇異局勢(0,n,n)也一樣,結果也是0。

    任何奇異局勢(a,b,c)都有a(+)b(+)c =0。

如果我們面對的是一個非奇異局勢(a,b,c),要如何變爲奇異局勢呢?假設 a < b
< c,我們只要將 c 變爲 a(+)b,即可,因爲有如下的運算結果: a(+)b(+)(a(+)
b)=(a(+)a)(+)(b(+)b)=0(+)0=0。要將c 變爲a(+)b,只要從 c中減去 c-(
a(+)b)即可。

    例1。(14,21,39),14(+)21=27,39-27=12,所以從39中拿走12個物體即可達
到奇異局勢(14,21,27)。

    例2。(55,81,121),55(+)81=102,121-102=19,所以從121中拿走19個物品
就形成了奇異局勢(55,81,102)。

    例3。(29,45,58),29(+)45=48,58-48=10,從58中拿走10個,變爲(29,4
5,48)。

    例4。我們來實際進行一盤比賽看看:
        甲:(7,8,9)->(1,8,9)奇異局勢
        乙:(1,8,9)->(1,8,4)
        甲:(1,8,4)->(1,5,4)奇異局勢
        乙:(1,5,4)->(1,4,4)
        甲:(1,4,4)->(0,4,4)奇異局勢
        乙:(0,4,4)->(0,4,2)
        甲:(0.4,2)->(0,2,2)奇異局勢
        乙:(0,2,2)->(0,2,1)
        甲:(0,2,1)->(0,1,1)奇異局勢
        乙:(0,1,1)->(0,1,0)
        甲:(0,1,0)->(0,0,0)奇異局勢
        甲勝。

取火柴的遊戲
題目1:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根, 
可將一堆全取走,但不可不取,最後取完者爲勝,求必勝的方法。 
題目2:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根, 
可將一堆全取走,但不可不取,最後取完者爲負,求必勝的方法。
嘿嘿,這個遊戲我早就見識過了。小時候用珠算玩這個遊戲:第一檔撥一個,第二檔撥兩個,依次直到第五檔撥五個。然後兩個人就輪流再把棋子撥下來,誰要是最後一個撥誰就贏。有一次暑假看見兩個小孩子在玩這個遊戲,我就在想有沒有一個定論呢。下面就來試着證明一下吧
先解決第一個問題吧。
定義:若所有火柴數異或爲0,則該狀態被稱爲利他態,用字母T表示;否則, 
爲利己態,用S表示。
[定理1]:對於任何一個S態,總能從一堆火柴中取出若干個使之成爲T態。
證明:
    若有n堆火柴,每堆火柴有A(i)根火柴數,那麼既然現在處於S態,
      c = A(1) xor A(2) xor … xor A(n) > 0;
    把c表示成二進制,記它的二進制數的最高位爲第p位,則必然存在一個A(t),它二進制的第p位也是1。(否則,若所有的A(i)的第p位都是0,這與c的第p位就也爲0矛盾)。
    那麼我們把x = A(t) xor c,則得到x < A(t).這是因爲既然A(t)的第p位與c的第p位同爲1,那麼x的第p位變爲0,而高於p的位並沒有改變。所以x < A(t).而
    A(1) xor A(2) xor … xor x xor … xor A(n)
  = A(1) xor A(2) xor … xor A(t) xor c xor … xor A(n)
  = A(1) xor A(2) xor… xor A(n) xor A(1) xor A(2) xor … xor A(n)
  = 0
這就是說從A(t)堆中取出 A(t) – x 根火柴後狀態就會從S態變爲T態。證畢
[定理2]:T態,取任何一堆的若干根,都將成爲S態。
證明:用反證法試試。
      若
      c = A(1) xor A(2) xor … xor A(i) xor … xor A(n) = 0;
      c’ = A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = 0;
      則有
c xor c’ = A(1) xor A(2) xor … xor A(i) xor … xor A(n) xor A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = A(i) xor A(i’) =0
      進而推出A(i) = A(i’),這與已知矛盾。所以命題得證。
[定理 3]:S態,只要方法正確,必贏。 
  最終勝利即由S態轉變爲T態,任何一個S態,只要把它變爲T態,(由定理1,可以把它變成T態。)對方只能把T態轉變爲S態(定理2)。這樣,所有S態向T態的轉變都可以有己方控制,對方只能被動地實現由T態轉變爲S態。故S態必贏。
[定理4]:T態,只要對方法正確,必敗。 
  由定理3易得。 
接着來解決第二個問題。
定義:若一堆中僅有1根火柴,則被稱爲孤單堆。若大於1根,則稱爲充裕堆。
定義:T態中,若充裕堆的堆數大於等於2,則稱爲完全利他態,用T2表示;若充裕堆的堆數等於0,則稱爲部分利他態,用T0表示。
 
孤單堆的根數異或只會影響二進制的最後一位,但充裕堆會影響高位(非最後一位)。一個充裕堆,高位必有一位不爲0,則所有根數異或不爲0。故不會是T態。
[定理5]:S0態,即僅有奇數個孤單堆,必敗。T0態必勝。 
證明:
S0態,其實就是每次只能取一根。每次第奇數根都由己取,第偶數根都由對 
方取,所以最後一根必己取。敗。同理,  T0態必勝#
[定理6]:S1態,只要方法正確,必勝。 
證明:
若此時孤單堆堆數爲奇數,把充裕堆取完;否則,取成一根。這樣,就變成奇數個孤單堆,由對方取。由定理5,對方必輸。己必勝。  # 
[定理7]:S2態不可轉一次變爲T0態。 
證明:
充裕堆數不可能一次由2變爲0。得證。  # 

 

[定理8]:S2態可一次轉變爲T2態。 
證明:
由定理1,S態可轉變爲T態,態可一次轉變爲T態,又由定理6,S2態不可轉一次變爲T0態,所以轉變的T態爲T2態。  # 
[定理9]:T2態,只能轉變爲S2態或S1態。 
證明:
由定理2,T態必然變爲S態。由於充裕堆數不可能一次由2變爲0,所以此時的S態不可能爲S0態。命題得證。 
[定理10]:S2態,只要方法正確,必勝. 
證明:
方法如下: 
      1)  S2態,就把它變爲T2態。(由定理8) 
      2)  對方只能T2轉變成S2態或S1態(定理9)
    若轉變爲S2,  轉向1) 
    若轉變爲S1,  這己必勝。(定理5) 
[定理11]:T2態必輸。 
證明:同10。 
綜上所述,必輸態有:  T2,S0 
          必勝態:    S2,S1,T0. 
兩題比較: 
第一題的全過程其實如下: 
S2->T2->S2->T2->  ……  ->T2->S1->T0->S0->T0->……->S0->T0(全0) 
第二題的全過程其實如下: 
S2->T2->S2->T2->  ……  ->T2->S1->S0->T0->S0->……->S0->T0(全0) 
下劃線表示勝利一方的取法。  是否發現了他們的驚人相似之處。 
我們不難發現(見加黑部分),S1態可以轉變爲S0態(第二題做法),也可以轉變爲 
T0(第一題做法)。哪一方控制了S1態,他即可以有辦法使自己得到最後一根(轉變爲 
T0),也可以使對方得到最後一根(轉變爲S0)。 
  所以,搶奪S1是制勝的關鍵! 
  爲此,始終把T2態讓給對方,將使對方處於被動狀態,他早晚將把狀態變爲S1.

 
推薦HDOJ題目
hdu 1907
http://acm.hdu.edu.cn/showproblem.php?pid=1907 
http://acm.hdu.edu.cn/showproblem.php?pid=2509
看完上面的結論,就能順利解決上面2道了
 
 
 
 
 
博弈算法入門小節 1536 1517 1907
小子最近迷途於博弈之中。。。感觸頗深。
爲了讓大家能夠在學習博弈的時候少走彎路,最重要的也是爲了加深自己的影響,溫故而知新,特發此貼與大家共勉。
學博弈先從概念開始:
特別推薦LCY老師的課件:博弈入門。
下載地址:http://acm.hdu.edu.cn/forum/read.php?tid=6875
這個課件個人認爲從博弈的基本思想,一直到解博弈的中心算法做了很好的詮釋。但是特別要注意的是。課件後面一部分英語寫的講義是重中之重。小子英語很弱,在這困擾很久。現在爲大家大概介紹一下。
主要是後繼點和SG值的問題:
SG值:一個點的SG值就是一個不等於它的後繼點的SG的且大於等於零的最小整數。
後繼點:也就是按照題目要求的走法(比如取石子可以取的數量,方法)能夠走一步達到的那個點。
具體的有關SG值是怎麼運用的希望大家自己多想想。
課件後面有一個1536的代碼。可以放在後面做做
看到這裏推薦大家做幾道題:1846(最簡單的博弈水題)
1847(求SG值)

 

有了上面的知識接下來我們來看看組合博弈(n堆石子)
推薦大家看個資料:
博弈-取石子游戲(推薦等級五星級)
http://acm.hdu.edu.cn/forum/read.php?fid=20&tid=5748
http://hi.baidu.com/netnode/blog/item/30932c2edc7384514fc226ea.html
這裏提出了一個奇異狀態的問題。看了這篇文章你會發現異或運算在博弈中使用的妙處。當然這裏指出的只是組合博弈中一種特殊情況。
王道還是對SG值的求解,但是知道這麼一種思路無疑對思維的廣度和深度擴展是很有幫助的。
ZZ博弈
http://acm.hdu.edu.cn/forum/read.php?fid=9&tid=10617
這裏介紹了組和博弈的兩種大的類型,一種是最後取的是N狀態一種是最後取的是P狀態,兩個狀態的解題方法能看懂很有幫助。當然,能夠把推導過程理解,吃透無疑是大牛級的做法~小子也佩服的緊~   
    1536題推薦做做這題,這題前面提醒大家是一個求SG值的題目,題目前面是對異或運算運用在組合博弈問題中的很好的解釋。當然題目本身是有所不同的。因爲在這裏面對取法有所要求。那麼這樣就回歸到了解決博弈問題的王道算法——求SG值上。
    有關運用求SG值的博弈題目有: 1850(也可基於奇異狀態異或)
1848(中和的大斐波那契數列的典型求SG值題)
1517(個人認爲有點猥瑣的題目。。。。在此題上困擾很久。當然搞出來很開心。小子是用比較規矩的求SG值的方法求出來的,但是論壇有人對其推出來了規律,這裏佩服一下,大家可以學習一下)
1079(更猥瑣的題目,對新手要求較高,因爲按傳統方法需要比較細緻的模擬加對邊角狀態的考慮,同樣有人推出來了公式)
當你全部看完以上的東西。做完以上的題目的話。。。小子恭喜你~你博弈入門了~~~~
    這裏小子告訴大家。博弈很強大。學習要耐心~謝謝
Current System Time : 2008-12-11 19:16:03

posted @ 2010-10-05 17:20 UESTC_Opera 閱讀(259) 評論(0) 編輯

【轉載】組合數學題目總結

轉載自:http://viva-villa.org/2010/08/acm%E7%BB%84%E5%90%88%E6%95%B0%E5%AD%A6%E9%A2%98%E7%9B%AE%E5%88%97%E8%A1%A8.html

基本組合計數

HDU

1028 Ignatius and the Princess III 整數劃分

HIT

1402 整數劃分問題 多種整數劃分

解題報告:點擊進入查看


 

置換羣

PKU

2369 求置換的週期 

1026 求置換的循環節 

1721 置換的冪運算 

3270 置換的循環節,黑書題 

1879 模擬+置換的循環節

HDU

1537 求三階魔方的置換

置換羣相關資料:點擊進入下載


 

Polya定理

HDU

1812 Count the Tetris polya定理 

1817 Necklace of Beads polya定理 

2481 Toy

HIT

2084 The Colored Cubes 

2647 Megaminx

PKU

1286 Necklace of Beads 

2409 Let it Bead 

2154 Color 

2888 Magic Bracelet

TJU

2795 The Queen’s New Necklaces 

1341 Let it Bead 

3352 Birthday Toy

UVa

10601 Cubes

11255 Necklace 

NUAA

1110

SGU

282 Isomorphism

SPOJ

422 Transposing is Even More Fun

Polya定理總結:點擊進入查看


 

容斥原理

HDU

2204 Eddy’s愛好 

3208 Integer’s Power 

1796 How many integers can you find 

2841 Visible Trees 

1695 GCD

ZJU

2836 Number Puzzle 

3233 Lucky Number

URAL

1036 Lucky tickets 

1091 Tmutarakan exams 

1114 Boxes

PKU

1091 跳蚤

SGU

476 Coach’s Trouble

HUST

1214 Cubic-free numbers II

posted @ 2010-10-05 17:01 UESTC_Opera 閱讀(126) 評論(0) 編輯

【轉載】矩陣乘法的題目總結

轉載自:http://acm.hdu.edu.cn/forum/read.php?tid=15908

http://acm.hdu.edu.cn/showproblem.php?pid=1575
http://acm.hdu.edu.cn/showproblem.php?pid=1757
赤裸裸的兩道
http://acm.hdu.edu.cn/showproblem.php?pid=2256
這題正解不是矩陣,不過如果推出公式來的話可以用矩陣解
http://acm.hdu.edu.cn/showproblem.php?pid=2604
推公式吧,推完後矩陣求解(也是道正解不是矩陣的題)
http://acm.fzu.edu.cn/problem.php?pid=1683
我的第一道矩陣,不過求和的話比一般的難一點點
方法有兩個.
1.增加一維,重新構造和的函數
2.詳細見 http://acm.hdu.edu.cn/forum/read.php?tid=8137&keyword=%BE%D8%D5%F3
http://acm.hdu.edu.cn/showproblem.php?pid=1588
此題同上題一樣
http://acm.hdu.edu.cn/showproblem.php?pid=3117
兩個部分,前一個是黃金分割比,後一個是最裸的矩陣
http://acm.hdu.edu.cn/showproblem.php?pid=2254
經典題目,見下邊資料
http://acm.hdu.edu.cn/showproblem.php?pid=2276
比較有趣並且隱藏的比較深的題
http://acm.fzu.edu.cn/problem.php?pid=1692
同上題一個原理,不過時限很緊,要降維優化
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2853
07年省賽題
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2974
08年省賽題
http://acm.hdu.edu.cn/showproblem.php?pid=2855
聯合訓練題
http://acm.hdu.edu.cn/showproblem.php?pid=2971
有點難推的公式
http://acm.hdu.edu.cn/showproblem.php?pid=2294
難題

posted @ 2010-10-05 17:00 UESTC_Opera 閱讀(184) 評論(0) 編輯

【轉載】字符串題目總結

轉載:http://hi.baidu.com/zfy0701/blog/item/440e923e1bc4183870cf6c89.html

POJ 1002 - 487-3279(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1002
題意:略
解法:二叉查找數,map,快排...

POJ 1200 - Crazy Search(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1200
題意:找出不相同的子串數量,字母表大小和子串長度會給定,這題很推薦hash入門者一做
解法:hash(建議karp-rabin)

POJ 1204 - Word Puzzles(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1204
題意:基本多串匹配
解法:多串匹配自動機(單串去弄肯定會超時)

POJ 1229 - Wild Domains(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1229
題意:模糊匹配
解法:dp

POJ 1625 - Censored!(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1625
題意:求長度爲n不包括給定模式串的字符串數量。(題意同2778,但不能按2778的方法,建議先做此題,再做2778)
解法:Aho-Corasick自動機 + dp
相關:http://hi.baidu.com/zfy0701/blog/item/c62f41afca8180ca7cd92a19.html

POJ 1743 - Musical Theme(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1743
題意:找一個串中最長不重疊子串
解法:後綴數組+二分枚舉答案,後綴數組+棧掃描,RK+二分枚舉答案
相關:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html

POJ 1816 - Wild Words(中等,絕對的Trie應用好題,同時又是搜索好題)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1816
題意:擴展多串模式匹配(含?, *)
解法:Trie + dfs,有興趣也可用基於位並行的自動機(可參考柔性字符串匹配,擴展匹配章節)

POJ 2185 - Milking Grid(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2185
題意:最小矩型的覆蓋
解法:KMP (不多的KMP好題)
相關:http://acm.pku.edu.cn/JudgeOnline/showmessage?message_id=33571

POJ 2513 - Colored Sticks(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2513
題意:轉化成歐拉回路
解法:並查集+hash,並查集+Trie

POJ 2774 - Long Long Message(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2774
題意:找兩個串的公共最長子串
解法:後綴數組,Oracle Factor自動機,後綴自動機
相關:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
http://hi.baidu.com/zfy0701/blog/item/d9fedbd14581113d9b5027ab.html

POJ 2778 - DNA Sequence(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2778
題意:求長度爲n不包括給定模式串的字符串數量。
解法:Aho-Corasick自動機(前綴樹) + 矩陣快速乘法
相關:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
類似於1625,建議先做1625

POJ 1699 - Best Sequence(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1699
題意:轉換爲TSP問題(注意子串的包含關係!)
解法:回溯,狀態dp

POJ 3376 - Finding Palindromes(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3376
題意:找回文串組合
解法:找出規律,然後Trie + kmp推廣形式

POJ 3415 - Common Substrings(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3415
題意:統計兩個串中長度>=k的公共子串的數量
解法:後綴數組+棧掃描,後綴自動機
相關:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html

POJ 3080 - Blue Jeans(如果用暴力,就很簡單)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3080
題意:求n個串的最長公共子串
解法:後綴數組+棧掃描,後綴數組+二分枚舉,暴力
相關:http://hi.baidu.com/zfy0701/blog/item/57ada7edf5f44ed1b31cb1cc.html

POJ 3208 - Apocalypse Someday(較難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3208
題意:略
解法:有意思的自動機dp

POJ 3261 - Milk Patterns(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3261
題意:求一個串中重複出現至少k次的最長子串
解法:後綴數組+棧掃描,hash + 二分

POJ 3294 - Life Forms(較難,強烈推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3294
題意:n個串中,爲大於n/2個串所共有的所有最長子串
解法:後綴數組+棧掃描,暴力(很容易被卡掉),後綴數組+線段樹(?)
相關:http://hi.baidu.com/zfy0701/blog/item/57ada7edf5f44ed1b31cb1cc.html

POJ 3576 - Language Recognition(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3576
題意:求一個dfa,它滿足兩個條件,1、能識別所有詞的dfa,2、要求狀態數最少。
解法:trie + hash
相關:http://hi.baidu.com/zfy0701/blog/item/b8332b5cd90e7b45fbf2c033.html

POJ 3581 - Sequence(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3581
題意:把原串分三段並反轉,求字典序最小的那串
解法:後綴數組
本來覺得很水,但卻是我目前做得最失敗的一道後綴數組題

 

POJ 3630 - Phone List(基礎,強烈推薦用此題練Trie)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3630
題意:給n個串,看是否有一個串是另一個串的前綴
解法:快排,Trie

POJ 3690 - Constellations(基礎)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3690
題意:二維串匹配
解法:轉換爲一維,或者用多串匹配

POJ 3691 - DNA repair(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3691
題意:修復非法字符串需要替換的最少字符數
解法:動態規劃,如果使用AC自動機去做dp的話比較簡單且只需要二維,用dp[i][j]表示第i個字符時,第j種狀態(不是非法狀態)所需要最小的修改量

POJ 3693 - Maximum repetition substring(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3693
題意:求最循環節最多的子串
解法:我所知道的最好的做法應該是先做s-factorization(也就是lempel-ziv),然後在分解之後的每一段中枚舉週期,週期可以通過推導關係式確定是否合法,然後可確定循環次數,取最大的,中間還用到了對kmp的擴展。具體來說有KK算法,和ML算法兩種,其中ML不能遍歷所有的runs。

其他OJ:

SPOJ 2743 - Prefix Tiling
http://www.spoj.pl/problems/PRETILE/

找規律

空罐 Cans(這個自動機dp還是有意思的)
http://cat.nknush.kh.edu.tw/ZeroJudge/ShowProblem?problemid=b179

HDOJ 2471 - History of Languages(杭州現場賽)
http://acm.hdu.edu.cn/showproblem.php?pid=2471
自動機的等價性,劃分集合的dp

HDU 2967 - Morphing is fun
http://acm.hdu.edu.cn/showproblem.php?pid=2967
UVA上也過得人比較少的一道題,需要分情況討論幾種情況,我09年過的最得意的題

 

posted @ 2010-10-05 16:58 UESTC_Opera 閱讀(160) 評論(0) 編輯

【轉載】數學題目總結

轉自:http://www.cppblog.com/zzfmars/articles/121335.html

1.burnside定理,polya計數法
這個大家可以看brudildi的《組合數學》,那本書的這一章寫的很詳細也很容易理解。最好能完全看懂了,理解了再去做題,不要只記個公式。
*簡單題:(直接用套公式就可以了)
pku2409 Let it Bead     
http://acm.pku.edu.cn/JudgeOnline/problem?id=2409

    pku2154 Color
http://acm.pku.edu.cn/JudgeOnline/problem?id=2154

    pku1286 Necklace of Beads
http://acm.pku.edu.cn/JudgeOnline/problem?id=1286

    *強烈推薦:(這題很不錯哦,很巧妙)
pku2888 Magic Bracelet
http://162.105.81.212/JudgeOnline/problem?id=2888

    2.置換,置換的運算
    置換的概念還是比較好理解的,《組合數學》裏面有講。對於置換的冪運算大家可以參考一下潘震皓的那篇《置換羣快速冪運算研究與探討》,寫的很好。
*簡單題:(應該理解概念就可以了)
pku3270 Cow Sorting 
http://acm.pku.edu.cn/JudgeOnline/problem?id=3270

    pku1026 Cipher
http://acm.pku.edu.cn/JudgeOnline/problem?id=1026

    *置換冪運算:
pku1721 CARDS
http://162.105.81.212/JudgeOnline/problem?id=1721

    pku3128 Leonardo's Notebook
http://162.105.81.212/JudgeOnline/problem?id=3128

    *推薦:(不錯的應用)
pku3590 The shuffle Problem
http://162.105.81.212/JudgeOnline/problem?id=3590

    3.素數,整數分解,歐拉函數
素數是可能數論裏最永恆,最經典的問題了(我們的隊名就叫PrimeMusic^-^)。素數的判斷,篩法求素數,大素數的判斷···還有很多其他問題都會用到素數。
*最水最水的:(心情不爽時用來解悶吧)
pku1365 Prime Land
pku2034 Anti-prime Sequences
pku2739 Sum of Consecutive Prime Numbers
pku3518 Prime Gap
pku3126 Prime Path
pku1595 Prime Cuts
pku3641 Pseudoprime numbers
pku2191 Mersenne Composite Numbers
pku1730 Perfect Pth Powers
pku2262 Goldbach's Conjecture
pku2909 Goldbach's Conjecture
*篩法:
pku2689 Prime Distance(很好的一個應用)
http://162.105.81.212/JudgeOnline/problem?id=2689

    *反素數:
zoj2562 More Divisors
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2562

    *素數判斷,整數分解:
這兩題都要用到miller_rabin的素數判斷和pollard_rho的整數分解,算法書上都會有,應該是屬於模板題吧,不過最好看懂自己敲一遍。
pku1811 Prime Test
http://acm.pku.edu.cn/JudgeOnline/problem?id=1811

    pku2429 GCD & LCM Inverse
http://acm.pku.edu.cn/JudgeOnline/problem?id=2429

    *歐拉函數:
數論裏很多地方都能用到歐拉函數,很重要的。
pku1284 Primitive Roots (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1284

    pku2407 Relatives (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2407

    pku2773 Happy 2006
http://162.105.81.212/JudgeOnline/problem?id=2773

    pku2478 Farey Sequence (快速求歐拉函數)
http://162.105.81.212/JudgeOnline/problem?id=2478

    pku3090 Visible Lattice Points (法雷級數)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3090

    *推薦:(歐拉函數,費馬小定理)
pku3358 Period of an Infinite Binary Expansion
http://acm.pku.edu.cn/JudgeOnline/problem?id=3358

    *整數分解
這個也很重要的耶,包括大數的表示方法。
pku2992 Divisors
http://acm.pku.edu.cn/JudgeOnline/problem?id=2992

    fzu1753 Another Easy Problem 
http://acm.fzu.edu.cn/problem.php?pid=1753

    hit2813 Garden visiting
http://acm-hit.sunner.cn/judge/show.php?Proid=2813

    pku3101 Astronomy (分數的最小公倍數)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3101

    4.擴展歐幾里得,線性同餘,中國剩餘定理
    這應該是數論裏比較重要的一個部分吧,這類的題目也挺多,具體的內容最好先看看數論書,我也整理過一些,可以參考參考:
http://hi.baidu.com/%B1%BF%D0%A1%BA%A2%5Fshw/blog/item/0676025d56a87d4afbf2c093.html

    *簡單題:
pku1006 Biorhythms
http://acm.pku.edu.cn/JudgeOnline/problem?id=1006

    pku1061 青蛙的約會
http://acm.pku.edu.cn/JudgeOnline/problem?id=1061

    pku2891 Strange Way to Express Integers
http://acm.pku.edu.cn/JudgeOnline/problem?id=2891

    pku2115 C Looooops
http://acm.pku.edu.cn/JudgeOnline/problem?id=2115

    pku2142 The Balance
http://162.105.81.212/JudgeOnline/problem?id=2142

    *強烈推薦:
sgu106 The equation 
http://acm.sgu.ru/problem.php?contest=0&problem=106

    pku3708 Recurrent Function (經典)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3708

    5.約瑟夫環問題
這個問題還是比較有意思的,不是很難。
*簡單題:
pku3517 And Then There Was One
http://acm.pku.edu.cn/JudgeOnline/problem?id=3517

    pku1781 In Danger
http://acm.pku.edu.cn/JudgeOnline/problem?id=1781

    pku1012 Joseph
http://162.105.81.212/JudgeOnline/problem?id=1012

    pku2244 Eeny Meeny Moo
http://162.105.81.212/JudgeOnline/problem?id=2244

    *推薦:
pku2886 Who Gets the Most Candies?
http://162.105.81.212/JudgeOnline/problem?id=2886

    6.高斯消元法解方程
其實解方程並不是很難,就是按線性代數中學的那種方法,把係數矩陣化成上三角矩陣或數量矩陣,不過有些題目要判斷是否有解,或枚舉所有解。不過這類題目我認爲比較難的還是怎麼去建立這個方程組,這個理解了,就沒什麼大問題了。
*簡單題:
pku1222 EXTENDED LIGHTS OUT
http://162.105.81.212/JudgeOnline/problem?id=1222

    pku1681 Painter's Problem
http://162.105.81.212/JudgeOnline/problem?id=1681

    pku1830 開關問題
http://162.105.81.212/JudgeOnline/problem?id=1830

    *推薦:
pku2947 Widget Factory
http://162.105.81.212/JudgeOnline/problem?id=2947

    pku2065 SETI
http://162.105.81.212/JudgeOnline/problem?id=2065

    *強烈推薦:
pku1753 Flip Game
http://162.105.81.212/JudgeOnline/problem?id=1753

    pku3185 The Water Bowls
http://162.105.81.212/JudgeOnline/problem?id=3185

    *變態題:
pku1487 Single-Player Games
http://162.105.81.212/JudgeOnline/problem?id=1487   

7.矩陣
用矩陣來解決問題確實很常見,但我現在用到還不是很好,很多難題我還不會做。建議大家可以去看Matrix67的那篇關於矩陣的十個問題,確實很經典,但不太好看懂。
*簡單:
pku3070 Fibonacci
http://162.105.81.212/JudgeOnline/problem?id=3070

    pku3233 Matrix Power Series
http://162.105.81.212/JudgeOnline/problem?id=3233

    pku3735 Training little cats
http://162.105.81.212/JudgeOnline/problem?id=3735

    8.高次同餘方程
有關這個問題我應該是沒什麼發言權了,A^B%C=D,我現在只會求D和B,唉,很想知道A該怎麼求。就先推薦幾道題目吧,這裏涉及到了一個baby-step,giant-step算法。
fzu1759 Super A^B mod C
http://acm.fzu.edu.cn/problem.php?pid=1759

    pku3243 Clever Y
http://162.105.81.212/JudgeOnline/problem?id=3243

    pku2417 Discrete Logging
http://162.105.81.212/JudgeOnline/problem?id=2417

    hdu2815 Mod Tree
http://acm.hdu.edu.cn/showproblem.php?pid=2815

    9.容斥原理,鴿巢原理
    很有用的兩個定理,但好像單獨考這兩個定理的不是很多。
*鴿巢原理:
pku2365 Find a multiple
http://162.105.81.212/JudgeOnline/problem?id=2356

    pku3370 Halloween treats
http://162.105.81.212/JudgeOnline/problem?id=3370

    *容斥原理:
hdu1695 GCD
http://acm.hdu.edu.cn/showproblem.php?pid=1695

    hdu2461 Rectangles
http://acm.hdu.edu.cn/showproblem.php?pid=2461

    10.找規律,推公式
這類題目的設計一般都非常巧妙,真的是很難想出來,但只要找到規律或推出公式,就不是很難了。我很多都是在參考別人思路的情況下做的,能自己想出來真的很不容易。
*個人感覺都挺不錯的:
pku3372 Candy Distribution
http://162.105.81.212/JudgeOnline/problem?id=3372

    pku3244 Difference between Triplets
http://162.105.81.212/JudgeOnline/problem?id=3244

    pku1809 Regetni
http://162.105.81.212/JudgeOnline/problem?id=1809

    pku1831 不定方程組
http://162.105.81.212/JudgeOnline/problem?id=1831

    pku1737 Connected Graph
http://162.105.81.212/JudgeOnline/problem?id=1737

    pku2480 Longge's problem
http://162.105.81.212/JudgeOnline/problem?id=2480

    pku1792 Hexagonal Routes
http://acm.pku.edu.cn/JudgeOnline/problem?id=1792

    11.排列組合,區間計數,計數序列
這些題目可能需要一些組合數學知識,基本上高中的知識就夠了。區間計數問題一般不難,但寫的時候需要仔細一些,各種情況要考慮到位。至於像卡特蘭數,差分序列,斯特靈數···都還挺有意思,可以去看看《組合數學》。
*簡單題:
pku1850 Code
http://162.105.81.212/JudgeOnline/problem?id=1850

    pku1150 The Last Non-zero Digit
http://162.105.81.212/JudgeOnline/problem?id=1150

    pku1715 Hexadecimal Numbers
http://162.105.81.212/JudgeOnline/problem?id=1715

    pku2282 The Counting Problem
http://162.105.81.212/JudgeOnline/problem?id=2282

    pku3286 How many 0's?
http://162.105.81.212/JudgeOnline/problem?id=3286

    *推薦:
pku3252 Round Numbers
http://162.105.81.212/JudgeOnline/problem?id=3252

    *計數序列:
pku1430 Binary Stirling Numbers
http://162.105.81.212/JudgeOnline/problem?id=1430

    pku2515 Birthday Cake
http://acm.pku.edu.cn/JudgeOnline/problem?id=2515

    pku1707 Sum of powers
http://acm.pku.edu.cn/JudgeOnline/problem?id=1707

    12.二分法
二分的思想還是很重要的,這裏就簡單推薦幾個純粹的二分題。
*簡單:
pku3273 Monthly Expense
http://162.105.81.212/JudgeOnline/problem?id=3273

    pku3258 River Hopscotch
http://162.105.81.212/JudgeOnline/problem?id=3258

    pku1905 Expanding Rods
http://162.105.81.212/JudgeOnline/problem?id=1905

    pku3122 Pie
http://162.105.81.212/JudgeOnline/problem?id=3122

    *推薦:
pku1845 Sumdiv
http://acm.pku.edu.cn/JudgeOnline/problem?id=1845

    13.穩定婚姻問題
    無意中接觸到這個算法,還蠻有意思的,《組合數學》中有詳細的介紹。
pku3487 The Stable Marriage Problem
http://acm.pku.edu.cn/JudgeOnline/problem?id=3487

    zoj1576 Marriage is Stable
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1576

    14.數位類統計問題
    在航點月賽中第一次接觸到這類問題,scau大牛little龍推薦我看了一篇論文,09年劉聰的《淺談數位類統計問題》,這篇論文相當精彩,也相當詳細,每道題都有詳細的分析和作者的參考代碼。所以我也沒什麼可說的了,這些題的代碼我博客裏也就不貼了,大家直接去看論文吧。
簡單:
ural1057 Amount of degrees
http://acm.timus.ru/problem.aspx?space=1&num=1057

    spoj1182 Sorted bit squence
https://www.spoj.pl/problems/SORTBIT/

    hdu3271 SNIBB
http://acm.hdu.edu.cn/showproblem.php?pid=3271

    較難:
spoj2319 Sequence
https://www.spoj.pl/problems/BIGSEQ/

    sgu390 Tickets
http://acm.sgu.ru/problem.php?contest=0&problem=390

posted @ 2010-10-05 16:57 UESTC_Opera 閱讀(343) 評論(0) 編輯

【轉載】圖論題目總結

摘要: 轉自 : http://hi.baidu.com/studyrush/blog/item/08ba35012c755383d43f7ce2.html最短路問題此類問題類型不多,變形較少POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449題意:經典問題:K短路解法:dijkstra+A*(rec)...閱讀全文

posted @ 2010-10-05 16:56 UESTC_Opera 閱讀(206) 評論(0) 編輯

contest(2)

1:並查集 poj1417
2:雙聯通分量 poj 2942
3:A*/IDA* poj 3460
4:DP poj3709
5:字符串 poj 3415
6:burnside定理polya計數法 poj 2888
7:矩陣構造 hdu 2855
8:概率 poj3071
9:博弈 poj1085
10:歐拉函數 poj 3358
11:多個圓求並面積+容斥原理 hdu 3119

posted @ 2010-10-03 16:22 UESTC_Opera 閱讀(28) 評論(0) 編輯

contest1

10.2:
1: 表達式求值       //POJ 1460

題意:給你一個正則表達式,然後其中有一些符號是?表示一個通配符。因爲通配符只有10個,所以可以2^10枚舉暴力去做。看求出來的值是否等於所給的值。

解法:遞歸下降的做法。按照遞歸下降那個論文的僞代碼寫就很簡單了,其實遞歸下降寫表達式比棧寫簡單的很多。

難點:表達式的合法性判斷,對於字符串表達式的處理。

 


2:全局最小割       Stoer-Wagner算法(最小割):poj 2914

1. 設最小割cut=INF, 任選一個點s到集合A中, 定義W(A, p)爲A中的所有點到A外一點p的權總和.
2. 對剛纔選定的s, 更新W(A,p)(該值遞增).
3. 選出A外一點p, 且W(A,p)最大的作爲新的s, 若A!=G(V), 則繼續2. 
4. 把最後進入A的兩點記爲s和t, 用W(A,t)更新cut.
5. 新建頂點u, 邊權w(u, v)=w(s, v)+w(t, v), 刪除頂點s和t, 以及與它們相連的邊.
6. 若|V|!=1則繼續1.

3:DLX(最小支配集)//hdu3529  【 Bomberman - Just Search!】 最小支配集


4:DP優化單調隊列  // hdu 3401 Trade

每天只能買入,賣出,不交易三種選擇

買入,賣出用單調隊列優化

 

5:後綴數組        //ural1297
6: FFT             // hdu 1402 A*B

 模板題

7: 容斥原理          //sgu 476 Coach’s Trouble 
8:高斯消元         // poj 1487

題目大意:

給定一棵樹,然後從樹根開始遍歷兒子節點,每個分支等概率,每個葉子結點都有一個分數值,遍歷到該結點則得到該外結點的分數值,求最後能得到的分數值的期望值。

解法:如果對應每一個結點列一個線性方程,則列出的方程我們只需對其進行解基本的線性方程組即可。題目一大難點在於如何遍歷樹,然後求得線性方程組。這裏不會做,最後看標程的,用基本的遞歸就解決了。而且其使用高斯消元的時候還用了floyd的傳遞閉包,以得到一些相連的集合,說明給的數據不僅僅是簡單的樹,可能會有森林出現。

難點:如何把表達式轉換成爲線性方程組


9:概率題條件概率與Bayes定理   //poj 3716


10:NIM遊戲及變形   //poj 2960

博弈,用SG函數。經典NIM改一點點,SG(x)=mex{SG(x-S[i])}。

 

11:多圓交面積     // hdu 3467

 題意:給你五個圓,問你這五個圓的交面積大小,如果交面積爲一個點的話,輸出這個點,如果不相交,則輸出2010。。。

解法:多個圓交面積,先處理內包含和重複圓,還有不相交的情況,剩下的就是相交的情況了的。

對於每個圓,讓他與其他的圓求交點,然後按照逆時針爲正方向去形成一段弧,然後把所有的弧求一個交集。求的弧求一段弓形面積,還有把兩個端點放入一個集合中,最後把集合中的點形成的多邊形的面積求出來,把所有面積的有向面積加和就是最後的結果了的。

難點:弧求交集。圓求交點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章