原创 UVA 1025 A Spy in the Metro(DP)

題目鏈接 有N個地鐵站,每個地鐵站之間的行駛是雙向的,並且需要的時間也是固定的,然後又m1列火車在不同的時段從左側發出,有m2列火車在不同的時段從右側發出, 現在問你經過T時間後,到達站點n過程中一共在站臺等待的時間的最小值是多少

原创 hdu 1811 Rank of Tetris(拓撲排序+並查集+各種情況考慮)

題目鏈接 我的思路是先把邊集存起來,如果有等號關係的那兩個點就用並查集縮一下點,然後在對>和<關係的進行處理,就是在他們的父親節點之間加邊就行,比如a>b就加一條fa[a]到fa[b]的邊,a<b就加一條fa[b]到fa[a]的邊

原创 hdu 3639 Hawk-and-Chicken(求被指(直接+間接)最多的點有哪些and值)

題目鏈接 題意: n個人搞投票,m個關係a->b,表示a投票給b。 a投票給b,b投票給c,表明a也投票給c。 獲得票數最多的那些人當老大,現在問你票數最多是多少,以及有哪些人。 也就是求圖中點被指(直接+間接)的最大值+集合。

原创 hdu 3416 Marriage Match IV (問圖中最多有多少條從a到b互不相關的路徑(i.e. 一條路不能走兩次)(限制:路徑要最短) 最短路+最大流)

題目鏈接 淦!看了3個小時原來是自己定義的宏定義坑了自己! 我的宏定義ms(a,0)就是memeset(a, 0, sizeof(a)),然後在函數內傳入指針p,然後ms(p, 0),memset的定義 : void *mems

原创 hdu 4725 The Shortest Path in Nya Graph (加虛擬點建圖+最短路)

我因爲加了點變成一個2n個點,一開始dij沒傳入2n,沒過,後來看了半天,原來是初始化時候沒傳入2*n,枯了。 思路: 把每一層也當做一個點,所以這樣一共就有2n個點,假設x點在y層,我的思路y層的點標爲(y+n),然後爲x到(y

原创 hdu 1827 Summer Holiday(tarjan縮點)

題目鏈接 思路: 先tarjan縮一下點,然後看每個集團之間的連線,發現需要的花費就是每個入度爲0的集團裏最小的花費之和,記錄有多少個入度爲0的集團,把集團中的最小花費加起來就行了。 可以和hdu 2767類比一下,問法有點類似,

原创 hdu 2767 Proving Equivalences(求最少加幾條邊使圖變爲強連通圖)

題目鏈接 思路: 先用tarjan縮點 然後說結論: 設in0爲圖中入度爲0點的個數,out0爲圖中出度爲0點的個數,最少需要加max(in0, out0)才能使圖變爲強連通圖。當然,如果已經是強連通圖的情況要特判一下。 個人的理

原创 LOJ 1074(SPFA最短路+判斷有無負環+找負環)

題目鏈接 思路: spfa複雜度O(VE),可以跑,先判斷有沒有負環,有的話就dfs一下那個點,把第一次找到的那個負環給找出來。最後先判斷x是不是可以到達負環的點,是的話就輸出?(距離可以無限變小)。然後判斷dis[x]是不是IN

原创 hdu 2874 Connections between cities (lca在線詢問)

題目鏈接 思路: 第一次做多顆樹合用一個lca,記錄一下,其實就是一開始init,在加邊的時候做一下並查集,把一棵樹上的點都算到一個集合去,然後遍歷1到n,如果fa[i] == i的話就搞一下lca,這裏多顆樹是共用一個歐拉序的,

原创 AtCoder Beginner Contest #164 (DE)

比賽鏈接 D 題意: 給你一個長度2e5的字符串,由數字組成,問你有多少個子串能被2019整除。 思路: 跟這道題一樣:基本一樣的題,ABC round 158的E題,這種求子串滿足整除某個數p的問題,基本套路就是維護一個從結尾到

原创 洛谷 P2341 受歡迎的牛(tarjan縮點)

題目鏈接 題意: 有n頭牛,m個關係a,b,表示a牛喜歡b牛,現在規定一頭牛是明星的條件是除了他其他所有的牛都喜歡他,現在問你有多少頭牛可以當明星。 思路: 因爲n是1e4,所以floyd求傳遞閉包肯定是不行的,二維數組都開不了這

原创 POJ 1511 Invitation Cards(反向建邊求其他n-1個點到點1的最短距離之和)

題意: 有n個點(1~n),現在規定首都是節點1,其他的(n-1)個節點上都有人,這(n-1)個人每個人都要先走到首都再走回自己原來的位置,問最小的路徑和是多少。 思路: 首先回去的路的很顯然的,直接以點1爲原點跑一邊,把從2到n

原创 hdu 3613 (manacher + 判斷枚舉的子串是不是迴文串)

題意: 先給你每個字母的價值和一個字符串,讓你切一刀,這個字符串的總價值爲左子串的價值+右子串的價值,如果子串是迴文串,價值就是所有字符的價值之和,否則就是0。 思路: 先馬拉車預處理一下,然後從0到len-2遍歷,枚舉左邊和右邊

原创 POJ 1860(判斷圖中有無正環)

題意: 給你n中貨幣,以及m個貨幣轉換的關係,若a的錢爲money, a轉b的匯率爲rate,手續費爲cost,那a轉b的錢就是(money-cost)*rate,現在給你一定數量的種類爲s的貨幣,現在問你能不能進行貨幣轉換,最後

原创 FZU 1901Period II(擴展kmp)

題意: 給你一個字符串,問你有多少個p,滿足s[i] == s[i+p](i+p <= len)。 思路: 一開始往kmp想了,不斷遞歸循環節,但感覺不是很好搞,然後就想了一下exkmp,發現exkmp就是專門搞這種事的,因爲算的