原创 Ural 1100. Final Standings

水題,把AC 的題目分類即可。 #include<iostream> #include<cstdio> #include <cstring> #include <queue> #include <cmath> #include <alg

原创 Ural 1019. Line Painting

在0到10^9的線段上,一開始顏色全白,然後修改多次子區間顏色或黑或白。求最終狀態下的白色最長區間。 主要就是離散化,然後就直接用線段樹了。剛剛開始學線段樹,代碼很挫。 #include <iostream> #include <cst

原创 10003 Cutting Sticks切割木棍

題意是一段給定長的木棍,給出切割的位置,切割長度爲A和B段,最小費用爲A+B.求最小費用。 讀過題之後,感覺和合並石子差不多。 但是想不出狀態方程。不知道怎麼轉移狀態。看過別人的思路。 加上木棍的開始和末尾當作分割點。 遞歸求解在從第i個

原创 Ural 1037. Memory Management

看到網上有用堆做的,我是用線段樹做的,根據noclyt的思想。 把30000個內存建樹,記錄區間內最早到期的內存時間。 當申請內存時,查詢編號最小的空閒內存。 當訪問內存時,先查詢內存塊時候已經到期,否則更新內存塊的到期時間。 #incl

原创 Ural 1654. Cipher Message

刪掉連續的相同兩個字母,直到不存在兩個連續且相同的字母。 模擬一個棧即可。 #include<iostream> #include<cstdio> #include <cstring> #include <queue> #include

原创 UVa Problem 10069 Distinct Subsequences

最近學習DP。 本題題意是給你兩個字符串x和z. 問你在x中有多少個z.可以簡單的DP加上遞推。對與a[i][j]代表長度j個母串中,出現多少個長度爲i個子串。 如果第i個字母和j個字母不相同,則可以轉化爲a[i][j]=a[i][j-1

原创 Ural 1090. In the Army Now

#include <iostream> #include <cstdio> #include <cstring> #include <map> #include <set> #include <stack> #include <queue

原创 Ural 1028. Stars

看樹狀數組課件的時候見到過 這個題,給出恆星的座標,Y軸從小到大有序,那麼按y軸的順序修改樹狀數組的值,求1-x的區間和就是在恆星左下的恆星數。 #include <iostream> #include <cstdio> #include

原创 Ural 1003. Parity

給出在一個區間內1的奇偶性,輸出在第一次出現矛盾位置。 個人感覺是一個比較難也比較好的並查集的題目,一開始並沒有看出來,囧。 把給出的區間轉化爲前開後閉區間,查詢區間的短點是否爲同一個祖先,若是,則判斷奇偶性是否正確。 若不在同一個區間把

原创 Ural 1126. Magnetic Storms

題好難讀,輸出長度爲k的區間內的峯值。 單調隊列的應用。 單調隊列的插入就是把一個元素加入,從隊尾開始到比第一個他的大的元素位置之後,在之後的元素全部拋棄。 刪除就是從對頭找到第一個滿足可在隊列中的元素作爲對頭。 #include <io

原创 最長不下降子序列的O(n*logn)算法

  先回顧經典的O(n^2)的動態規劃算法,設A[t]表示序列中的第t個數,F[t]表示從1到t這一段中以t結尾的最長上升子序列的長度,初始時設F[t] = 0(t = 1, 2, ..., len(A))。則有動態規劃方程:F[t]

原创 alignment

剛一開始理解錯了題意,當我wa了兩次之後,重新思考,發現在隊列裏的士兵可以從左邊或者從右邊沒有比他高的即可。 由此,此題和合唱隊形差不多,求一個最長升序列,以及一個最長下降序列,枚舉中間的兵和他左邊最長下降序列之和。 時間複雜度爲o(n^

原创 Palindrome

求最少插入多少個字符使原字符串成爲一個迴文串。 用字符的正向串和逆向求出最長公共子序列即可知道需要添加的字符數目。 學到一點關於滾動數組的知識。 #include <iostream> #include <cstdio> #include

原创 poj 2749 Building roads

把每個牧場分別和兩個中轉站其中一個連接。使曼哈頓距離最大值最小。 要把每個牧場拆成兩個點,一個表示連到第一中轉站,一個表示連到第二個中轉站。 記錄牧場之間的曼哈頓距離,然後二分,對於當前距離,如果滿足連一條邊,如果兩個牧場不友好,他們不相

原创 Ural 1471 Tree

詢問一棵樹的任意兩個節點的最短距離。 裸的lca。 #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<map> #inclu