原创 L2-008. 最長對稱子串(manacher算法)

今天學習了一下manacher算法,比較難理解的是這一步,mx表示的是當前的對稱子串的最右端, id表示的這個子串的中間這個點。2*id-i 表示 i 關於 id 的對稱點 j p[i]=mx>i?min(p[2*id-i],mx-i):

原创 hdu5738(極角排序)

http://acm.hdu.edu.cn/showproblem.php?pid=5738 題意就是給你n個點,問你有多少個集合符合至少有兩個點在同一條線上。 思路就是把每個點遍歷一下,然後用pair記錄斜率,cnt表示每個點的和他重複

原创 PATL2-007. 家庭房產詳解(並查集)

這道題其實就是並查集,只不過中途的過程稍微煩瑣了一點。 思路就是建一個結構體,ans1表示房子的數量,ans2表示面積,id表示編號,num表示人數。 先把所有的編號在一起,找到這個編號最小的,把所有的ans1,ans2加到他這裏。 然後

原创 hdu5791Two(dp)

題意就是給你兩個數組,問這兩個數組的相同的子序列有多少個。 其實這題有點像變形的最長公共子串 a[ i ]==a[ j ]時,dp[ i ][ j ]=dp[ i-1 ][  j ]+dp[ i ][ j-1 ]+1 a[ i ] !=a

原创 L2-005. 集合相似度(set)

這題主要是用到set的查詢功能,直接暴力就好了 AC代碼: /* *********************************************** Author :yzkAccepted Created Tim

原创 HDU 4292Food(最大流+拆點)

http://acm.hdu.edu.cn/showproblem.php?pid=4292 題意就是每個人都有喜歡的飲料和食物,但是這些飲料和食物有限,問你如何選才能使最多的人喝到自己喜歡的飲料和食物。 這題主要就是想清楚如何建邊,然後

原创 UVA 10859 Placing Lampposts(樹狀DP)

題意: 給你一個n個點m條邊的無向無環圖,在儘量少的節點上放燈,使得所有邊都被照亮。每盞燈將照亮以它爲一個端點的所有邊。 在燈的總數最小的前提下,被兩盞燈同時被照亮的邊數應該儘量大。 思路: 這裏比較重要的思路就是 有兩個所求

原创 UVA 11825 Hackers' Crackdown(狀壓DP)

這道題的題意就是有n個點,每個點都有鄰居,問你依靠這些關係,一共可以組成幾個完整的網絡 思路 這道題因爲數據最大才16,所以可以用狀態壓縮去做,0代表不經過,1代表經過。這樣枚舉肯定不會超時的,然後用cover數組記錄的是每個狀態的下一狀

原创 hdu4308 Saving Princess claire_(BFS)

題意就是給你一個圖,從Y走到C,每次經過*都有一個固定的花費,Y是傳送門,可以傳送到任何其他的傳送門,#是路障。輸出最小的花費。 AC代碼: #include<stdio.h> #include<string.h> #include<io

原创 hdu 5754 Life Winner Bo(博弈)

題解給的很詳細 我們依次分析每一種棋子。 ①王。 首先注意一個3*3的棋盤,開始在(1,1),問走到(3,3)誰有必勝策略。 窮舉所有情況,容易發現這是後手贏。 對於NN和MM更大的情況,我們把橫座標每隔3、縱座標每隔3的點都

原创 PATL2-002. 鏈表去重(模擬)

這個我直接用用結構體模擬的這個鏈表。。搞清楚鏈表的結構就好了 /* *********************************************** Author :yzkAccepted Created Ti

原创 UVA 11995 I Can Guess the Data Structure!

這題就是讓你用 隊列,棧,和優先隊列分別實現給你的詢問。 我直接用的sql實現的,比較簡單吧。 AC代碼: /* *********************************************** Author

原创 690C2Brain Network (medium)

這題的題意就是給你一個樹,每兩個點之間的距離爲1,然後問你其中兩個點最長的距離爲多少。 DP數組表示這個點最長可以掛多少個點。 mx表示當前節點除了他的父節點之外,可達到的最遠的距離。 AC代碼: /* *****************

原创 PATL2-006. 樹的遍歷

用的是遞歸的思想,找到每一層的根節點,然後進行建樹。最後用個bfs將這個樹輸出 AC代碼: /* *********************************************** Author :yzkAcce

原创 POJ 2195Going Home(最小費用最大流)

題意:給你一個圖,H表示房子,m表示人,爲你這些人進到房子的最小話費是多少。 直接把源點和人建邊,人和房子建邊,房子和匯點建邊。 跑一邊最小費用最大流就好。 AC代碼: #include<stdio.h> #include<string.