題目分類 |
Gopher II |
圖論,二分圖匹配 |
Tight words |
DP |
WERTYU |
簡單題 |
Division |
math(高精)
|
Hotter Colder |
半平面交(geometry)
|
Gopher II:
只需要把老鼠看著一個集合,鼠洞看著一個集合,然后鼠與洞之間有邊相連僅當鼠能在規定時間跑到洞中,然后求最大匹配,用總數減去最大匹配即為答案!
Tight words :
題意:給一個字母表 {0, 1, ... , k}, 0 <= k <= 9 ,問一串長度為 n 的字符串(只含給定字母表中的字符)是否是緊湊的,緊湊的定義是相鄰字符之差的絕對值不大于 1
dp中狀態是長度為 i 最后一個字符為 j 的概率p[i][j],狀態轉移為
p[i][j] = 1/k (i=0; j=1,2..k)
p[i][0] = p[i-1][0]/k + p[i-1][1]/k (i>0)
p[i][k] = p[i-1][k]/k + p[i-1][k-1]/k (i>0)
p[i][j] = p[i-1][j-1]/k + p[i-1][j]/k + p[i-1][j+1]/k (i>0, j=1, 2, 3... k-1)
Division :
這道題要高精度, 建議用 java
題目問 (t^a - 1)/(t^b -1) 是不是小于 100位 的整數,如果是,求出它的值
t, a, b 為小于2147483647 的正整數
我做的時候是先猜出他的判斷條件,判斷條件比較容易猜:
猜想 :僅當 b | a 時,上述表達式是整數
有這個猜想,就可以把上述表達式化減成等比數列
1 + t^b + (t^b)^2 + (t^b)^3 + ... + (t^b)^(a/b - 1)
接下來只要二分求出這個式子的和,由于和有最大100位,所以要用高精度,還有要注意特判 t==1 的特殊情況,我在這里wa了好幾次
做題時因為是猜的,交的很忐忑 ><!現在貼出證明,從discuss里淘出來的
gcd(a^m - 1, a^n - 1) (m > n)
if m = p*n + r (0<r<n)
then
a^m - 1 = a^(p*n+r) - a^r + a^r - 1
= a^r(a^(p*n)-1) + (a^r-1)
since (a^n-1) | (a^(p*n)-1)
and (a^r-1) < (a^n-1)
so r==0
所以 m%n==0
Hotter Colder:
題目不贅述了,有興趣的可以直接看題目
這道題中的游戲很像一個人不斷報價,另一個人不斷告訴你是多了還是少了,
與報價不同,報價是一維的,這道題是二維的
很裸的半平面交, 數據很弱,而且就題目本身來說,它是切割一次輸出一次答案,
這里用 o(n^2) 的算法反而比 o(nlogn)的算法好