Problem
給予每一個格子的得分,分數為鄰近九格的 L 個數 (1 個 1 分) 加上自己是否為 L (3 分),因此最低 0 分,最高 12 分。
保證只有唯一解。
Sample Input
|
|
Sample Output
|
|
Solution
不斷地刷新已知的可能結果,慢慢從邊緣開始向內侵蝕已知解。
要做整數線性規劃看來是不可能,用刷新的方式看看是否可以噴出解。
|
|
給予每一個格子的得分,分數為鄰近九格的 L 個數 (1 個 1 分) 加上自己是否為 L (3 分),因此最低 0 分,最高 12 分。
保證只有唯一解。
|
|
|
|
不斷地刷新已知的可能結果,慢慢從邊緣開始向內侵蝕已知解。
要做整數線性規劃看來是不可能,用刷新的方式看看是否可以噴出解。
|
|
計算 base B 下,每一個 digit 都是 d 的情況,長度為 N,mod M 的結果為何?
|
|
|
|
找到
$$d B^{0} + d B^{1} + ... + d B^{N-1} \text{ mod } M \\ \Rightarrow d \frac{B - 1}{B^{N} - 1} \text{ mod } M$$由於 M 超過 int,運算起來仍有機會 overflow,因此要使用模乘法,也就是相當於直式乘法的運算,防止 (a*b) mod M 溢位。
|
|
給一個整數 N,接著詢問 x,有多少 gcd(i, N) <= x
。
|
|
|
|
先把 N 的因數 f 全部找出,原則上不超過 2000 個,然後建出 phi(N/f[i])
。
當要知道 gcd(i, N) = x
時,相當於找到 gcd(i/x, N/x) = 1
,任何與 N/x
互質的個數。建造完後,對於每次詢問二分答案即可。
很多地方忘記用 long long,吃了不少 Runtime error。
|
|
給予梯形兩點座標、四個邊長。找到另外兩點座標。
|
|
|
|
向量旋轉找解。
|
|
在現有的鋪設下,還有幾處建築物之間沒有連通。
找到花費最小的歐基里德距離生成樹
|
|
|
|
直接用 kruskal 就可以完成,但是建造邊最慘將會達到 O(n^2)
,因此效率並不好,好幾年之後回過頭來寫這一題。
對於 EMST 可以使用 Delaunay triangulation 完成。Delaunay triangulation 原則上可以在 O(n log n)
時間內完成。由於 EMST 是 Delaunay 的 subgraph,而 Delaunay 保證 edge 數最多為 3n - 6
。套用 kruskal 的 O(E log E)
算法就能保證在 O(n log n)
時間內完成。
Delaunay triangulation 目前實作有 D&C 和 random 兩種。
計算幾何資料請參照 morris821028/Computational-Geometry 下載。
廣泛的比較下,兩者期望都在 O(n log n)
完成,而實際結果 D&C 普遍速度快很多。random 作法很吃機率期望,原因是要支持動態的 point location 操作,沒有一個好的資料結構來保證每一步的搜索效率,教科書上給予一個類似可持久化結構的 DG structure,深度是期望的 O(log n)
,實作起來只會比 O(n)
快個常數倍。但 random increase algorithm 對於演算法的證明的確是比較容易,而且步驟相當好說明。
當效率不好去學 D&C algorithm,一開始要對座標進行排序,也就是不支持動態 (離線操作),接著針對 x 座標剖半,兩個完成 Delaunay triangulation 的凸包進行合併,接著需要將中間縫隙穿針引線地縫起來。因此要找到兩個凸包的下公切線,然後開始攀爬上去,保證一開始的下公切線一定是 Delaunay edge,然後開始窮舉下一個 Delaunay edge,過程中也不斷地移除不適的邊。
有相當不錯的資料結構可以快速地搜索公切線、圍繞凸包的頂點 … 等,但是根據教科書給予的計算,每一個點的 degree 期望值不超過 9,意即偷偷地窮舉攀爬不影響效率。
關於三點共圓,詢問一點是否在圓內的操作,投影到拋物面上,三點在投影結果上拉出一個平面,若點在圓內,則保證該點在平面的下方。求出外心計算,會造成誤差 (無法儲存除法運算結果),換成拋物面的思路魯棒性高。
下附 D&C algorithm 的做法,關於 random 就放在 github repo 封存了。
|
|
跨國的文明競逐與衝突-原住民的文化問題
報告核心-文明的傲慢
正因為我們是侵略者!他們才是 真‧台灣人 。
在評論中大陸人這麼說
要求弱勢族群做出相同的行為-那就是一種 傲慢 。
漢人文化需要競爭,做任何事情都需要競爭,而原住民只要在工作上能夠溫飽就能快樂過活,藉由唱歌舞蹈等表現方式來闡述他們的快樂,及時行樂整是他們的天性,說他們懶惰不上進才是我們的傲慢。相較於競爭,他們是互助合作的生命共同體,在那種生存環境下,農耕、狩獵都要互相幫忙,你說競爭下的快樂帶給多少回饋?
如何表現自己的英勇事蹟?奮勇殺敵、狩獵得到的 骸骨 作為一個能力階層。即使如此,敬老尊賢是重要的文化,年齡階層而非能力階層。做為一個活在漢人社會的人而言,能力若決定一生,而談快樂?雖然能力不如人,難道就培養不出比自己厲害的人?也許虎媽就是這麼來的。
佩刀難道錯了嗎?佩刀是因為生活所需,也是我們地位的象徵。憑什麼要求不能帶刀,那你們帶刀又是什麼意思,相比中古世紀騎士可以制裁的對象,低層社會人們只能對自己以下的對象進行攻擊。
什麼樣背景的人用什麼方式學,不是比較好理解嗎?學習成績不好沒什麼好擔心,只是規格面向不同。不懂不是問題,只是要換的方式。
我們的信仰、精神,藉由血緣牽連在一起。
鼓勵改變,但卻又希望不變?(你們這群人到底想怎樣!)
反問小朋友:「沒有漢堡和薯條,你們都吃什麼?」小朋友答說,就吃海裡抓的九孔和龍蝦。
當年英國統治的殖民地眾多,要不是他們可以退回祖國,那群人也是相當龐大的原住民。然而我們仗著人數眾多,無法退出的處境,厚臉皮地活在這片土地。不是中國對待少數民族的方式,他們在同一個文化脈絡下分支成長,即使不能理解,也能知道自己是同一脈人,已經磨得相當長久的時間。
縱使看著別國對待本國原住民的方式,例如:規劃保護區、歸還土地… 等,同時也表明了曾經使用過的暴力,他們的處境與我們台灣不同,他們有原本的家可以回,而我們必須對抗其他國家的勢力,必須與原住民站在同一條船上,也許對待他們的方式相比別國來說殘酷,一旦我們的立場被別國 (如中國,他們又會怎麼對待原住民?) 取代,那到底是誰殘酷?
觀光是大多數人的娛樂,也因此造就服務業的產生。談談服務業與文明化的關係
這個新的公民身分的尊貴性,首先意味著華人社會本來以長幼輩分及遠近
親疏為基礎的傳統人際關係階序必須被鬆動,好讓尊貴的自豪自信得以越過這
些差異位置所包含的舉止規範和情感限制,而成為所有主體都可以近用的現代
情感特質。在這方面,第一個重要的結構性發展就是台灣產業結構劇變後的服
務業人際互動模式,以及隨之在日常生活中不斷重複的互動消費實踐,它們都
使得新規訓不再只是外加的強制和要求,而得以徹底融入主體的生活活動與內
在自我情感。
這深入探討可能要問一下何春蕤老師,總之身處服務業的情感,肯定是原住民們所無法理解的,一開始覺得他們好客,不知不覺地商業化他們,直到他們的好心被利用,才逐漸地被厭惡。
當我們對外說出「我們台灣人」到底是指那些人?是活在這片土地上的所有人?那接下來的話就是共同意識嗎?正因為要對外證明我們是個國,才急切地想要讓所有活在這片土地上的人,至少有一個共同意志?
我們用更殘酷的方式生存,剝奪那些活在幕後的人的生存條件與資源,真的有比原住民文明嗎?追求文明結果,竟是雙面刃?
在各國文化的核心目標不同時,它們對待原住民的方式也有所不同,到底是給予相同地位?還是給予空間適性發展?我想這牽涉到-到底有沒有必要活在「社會」牢籠,他們明明不用看處在強勢文化人們的臉色,自給自足活得很好,為何他們要踏入我們的文化?
也許以前原住民的人數與文化有關係,為了生存不得不離開原本的文化,背負著必須學習更多文化知識的壓力。這種不對稱的學習,真的造就我們欺壓原住民了嗎?
造成必要的出走的主因。根據人口普查統計,至今原住民已經從日治時代的七萬多人暴增到五十多萬人,它們的生活習性支撐這麼多人嗎?
偏見有時也是一種讚美 。即使是你所認為不文明的舉動,不就是正因為做了你做不到的事情?
唱歌、表演真的是唯一生存之道?原住民未來若要發展特色,難道唱歌表演就是唯一了嗎?在很多原住民歌手的興起下,就只能朝著同一個方向嗎?
窮鄉僻壤的村落,書上這麼多內容壓根沒見過,為何而學?遵守什麼規矩?
一個跨世代的心態,但要知道強勢文化下也有弱勢成員,而生存的價值是因為他們的需求而存在,有時給予環境正表示處於文明的鑑賞期。
生活就是最好的教育,有人走得出去,也一定會有人走不出去,為了 部落 而走的民族精神?
從人工到電動-難道有人畫畫一開始就學電繪嗎?沒什麼大驚小怪的,會電腦打字就不會寫字了嗎?
給一棵樹,接著有數次操作將路徑 (u, v) 上的所有節點權重加上 k。
請問最後每一個點帶有的權重為何?
|
|
|
|
參照 zerojudge b322. 樹形鎖頭 的解法。
A[]
: 子樹總和B[]
: 節點權重增加路徑 u 到 v 的權重為 k 時,路徑相當於 u 到某點 x 再到 LCA(u, v) 接著 y 最後 v。
那我們增加節點 u, v 的權重
B[u] += k, B[v] += k
,減少其 LCA 的權重B[LCA(u, v)] -= 2k
,然後你會觀察A[]
的部分,權重增加 k 的只會有 u-v 之間的所有節點。
|
|
平面上有 N 個點,並且給定數條有向邊,在這個遊戲中,必須從某個點出發,沿著邊回到起點。每一條邊最多經過一次,而點可以重複走。
每經過一條邊,可以獲益每單位長 X 的利益,但是使用一條邊的成本為 Y。
請問最大獲益為何?
|
|
|
|
目標將每一個點調整 indeg = outdeg
,要將多餘的邊捨去,只要滿足 indeg = outdeg
,則可以表示平面上有數個尤拉環道。
接著建造最少費用流的模型,來捨去掉多餘的邊。當存有邊 e(i->j)
時,outdeg[i]++, indeg[j]++
,一開始選擇所有 cost(e(i->j)) > 0
的邊,作為初始盤面,對於 cost(e(i->j)) < 0
先不選,選擇獲益為負的結果並不好。
如果 cost(e(i->j)) > 0
,建造邊 i->j, flow: 1, cost: cost(e(i->j))
,假使在最少費用流中選擇這一條邊時,就會將 deg 數量減少。對於 cost(e(i->j)) < 0
一開始並沒有在盤面上,如果流經這一條邊,則說明將會增加這一條邊。
|
|
組合的反函數,現在給定組合數,輸出是由哪幾種組合可以配出組合數。
|
|
|
|
先預見表,完成前幾項的結果。
看著巴斯卡三角形單純看 i,對於 C(n, i)
是一個嚴格遞增的函數。因此窮舉 i,針對組合數進行二分搜索。
為防止越界,在整數計算上可以利用除法進行比大小。
|
|
金融交易,它們希望賣出、買進交易結束後的差為零。
意即將數字分兩堆的結果相同。
|
|
|
|
由於保證 0 < a[i] <= i
,基於這一點,可以發現到只考慮一個數字 a[1]
時,必然可以湊出 1 - a[1]
,當考慮第 i 大數字時,保證前 i - 1 個數字可以湊出 1 ~ (i-1)
,加上第 i 個數字必然可以湊出 1 ~ (i-1)+a[i]
(1, 2, 3, ..., i-1, a[i], 1+a[i], ..., i-1+a[i]
)。
而事實上,可以湊出所有的 1 ~ sum[i]
,根據遞歸是可以證明的。只要總和是偶數,必然可以劃分成總和相同的兩堆。排序一下,從大的數字開始挑,貪心去完成目標的總和。
|
|