原创 【題解】codeforces766D Mahmoud and a Dictionary

題目鏈接 題意:有n個單詞,給定m個關係,每個關係要麼表示單詞a與單詞b相同,要麼表示單詞a與單詞b相反。並且“相同”與“相反”有性質:若a與b相同,b與c相同,則a與c相同(從而單詞的相同關係是等價關係);若a與b相反,b與c相反,則a

原创 【題解】玲瓏學院oj1088 Red Packets

題目鏈接 題意:給定n個元素,每個元素有費用a和價值b兩個屬性。可以從n個元素中選取連續的若干個,滿足這連續的若干個元素中除去至多m個元素之外的其他元素的費用和不超過k, 這麼做可以獲得的價值定義爲這連續的若干個元素的價值和。求能夠獲得的

原创 【題解】codeforces766E Mahmoud and a xor trip

題目鏈接 題意:給定一棵樹,樹的每個點有點權,定義2個點u和v之間的距離爲u到v的路徑上的點的點權的異或和。求全體點對(u,v):1<=u<=v<=n的距離和。 分析:考慮按位處理距離和。設有ans[i]個點對的距離的第i位爲1,則距離和

原创 【題解】玲瓏學院oj1089 Place the Tiles

題目鏈接 題意:用1×2的骨牌來鋪帶障礙格的矩形網格,使得每個網格至多被一張骨牌覆蓋且無法再加入骨牌(即沒有相鄰的未覆蓋無障礙網格)。求需要的最少骨牌數。 分析:輪廓線dp。每個格子的狀態用一個4進制數來表示,0代表未覆蓋,1代表已覆蓋且

原创 【題解】codeforces441E Valera and Number

題目鏈接 題意:給定整數x、k和概率值p,對x進行k次隨機操作,每次操作有p概率對x乘2,有1-p概率對x加1。求操作結束後,得到的數的二進制表示末尾的連續的0的數目的期望。 分析:設f[i][S][k]爲第i次操作後得到的數的二進制0~

原创 【題解】atcoder2303 Boxes

題目鏈接 題意:給定n個非負整數a1,a2,...,an,進行操作。每次操作可以選定一個位置i,然後將a(i+j)減去j(當i+j>n時將a(i+j-n)減去j)。問能否經過有限次操作把所有數都變成0。 分析:設對位置i操作了xi次,則可

原创 【題解】atcoder2304 Cleaning

題目鏈接 題意:給定一棵帶點權的樹,允許進行如下操作:選取2個不同的葉子u、v,將u到v的路徑所經過的點的點權減1。問能否經過有限次操作使得全體點權變爲0。 分析:取一非葉結點作爲樹的根。設結點u的點權爲a[u],結點u的經過父節點的點權

原创 【題解】codeforces786C Till I Collapse

題目鏈接 題意:給定一個長度爲n的數組(數組元素∈{1,2,...,n}),對k∈{1,2,…,n},求最小的ans[k],使得數組可以分爲連續的ans[k]段,每段內不相同的元素個數都不超過k。 分析:爲了使ans[k]最小,我們可以貪

原创 【題解】codeforces786A Berzerk

題目鏈接 題意:n個點圍成一個圈,按順時針編號爲1~n。在某個點上會有一個物品C,初始位置範圍是2~n。2個人A、B進行博弈,每個人都有一個數集,數集內的數x滿足1≤x≤n-1。A、B輪流進行操作,每輪的操作者可以從自己的數集中選出一個數

原创 【題解】dutoj1082 埃蒙的時空航道

題目鏈接 題意:略(原題的描述已經很簡練了)。 分析:可以想到這樣一個網絡流模型:對星球i,源點s連邊至點i,容量爲pi,點i連邊至匯點t,容量爲si,點i連邊至點i+1、...、點n,容量均爲c。則最大流即爲答案。由於n的規模比較大,所

原创 【題解】codeforces765F Souvenirs

題目鏈接 題意:給定一個長度爲n的數組與m個查詢。第i個查詢要求輸出數組下標區間[li,ri]內的數之間的距離(差的絕對值)的最小值。 分析:離線處理查詢。將查詢區間按右端點從小到大排序,維護一個數據結構,使得將數組元素a1,a2,...

原创 【題解】codeforces778C Peterson Polyglot

題目鏈接 題意:給定一棵trie樹,可以刪除一層邊,再將父邊被刪且父親相同的結點對應的子樹合併得到一棵新trie樹,求新trie樹的最小結點數。 分析:啓發式合併。在合併結點u的子樹時,選擇將小子樹合併到大子樹裏,這樣總的合併的時間複雜度

原创 【題解】atcoder2234 Menagerie

題目鏈接 題意:有n只動物圍成一個圈,每隻動物要麼是羊要麼是狼,羊總說真話,狼總說假話。給定一個字符串P,字符串的第i個字符爲'o'代表第i只動物認爲與它相鄰的2只動物是同類,字符串的第i個字符爲'x'代表第i只動物認爲與它相鄰的2只動物

原创 【題解】codeforces741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

題目鏈接 題意:給定一棵有根樹,結點編號爲1~n,根結點爲結點1。每條邊上有一個字母,求各子樹內最長的滿足“路徑上的字母經過重排後可以構成迴文串”的簡單路徑。 分析:對結點u,用2進制數vec[u]表示結點u到根結點的路徑上各字母的數目的

原创 【算法】樹上啓發式合併算法

        樹上啓發式合併算法是啓發式合併算法在樹上的應用。下面我直接通過一個例子來講解這個算法。         例:給定一棵有根樹,樹的結點編號爲1~n,根結點爲結點1。結點i有顏色col[i],其中1≤col[i]≤n。要求回答