原创 VK Cup 2012 Qualification Round 2部分題解(C,D,E)

CF上的一場資格賽,有二十四小時的時間給我們做,所以爲了晉級,我和隊友合力弄掉了四題,而最後的E題其實也不難,後來也過了……因爲A,B相對較水,所以以下只講後三題…… contest C題: 比賽時一致認爲暴力不行,比賽後發現很多都是暴

原创 【IDA*(迭代加深)】PKU-2286||HUD-1667-The Rotation Game

第一次寫迭代加深,發覺這貨很神氣的說……雖然代碼都是模仿人家的,不過自己加了一個判斷條件,時間立刻減少一半…… 某大牛對於IDA*的解析:所謂迭代加深,就是在深度無上限的情況下,先預估一個深度(儘量小)進行搜索,如果沒有找到解,再逐步放大

原创 【搜索+強剪枝】PKU-1167-The Buses

在黑書上的很好的一道搜索題,開始時基本沒什麼思路,代碼也是按照大牛題解這裏敲出來的…… 題目 #include<iostream> using namespace std; int bg,ed,Min,temp,sum[60],use[6

原创 【模擬】ZOJ-3590 -3+1

今天浙大校賽最水的一道題,純模擬……具體見代碼…… 題目 #include<iostream> #include<cstdio> using namespace std; template<class T> T Max(T x,T y)

原创 【最小表示法】HDU-4162-Shape Number

可以說是最用小表示法求循環串的最小字典序的模板題,所以就直接套用模板了…… 題目 #include<iostream> #include<algorithm> using namespace std; char a[300005],b[3

原创 【dp+dfs】VK Cup 2012 Round 1-D. Distance in Tree

dp+dfs好題,狀態轉移寫得很贊……dp[i][j中的i表示以第幾個點爲中心,j長度,綜合起來表示以i爲中心長度爲j的邊的總數…… 題目 #include<iostream> #include<vector> using namespa

原创 【歸併排序】ZOJ-3574-Under Attack II

這個用歸併算法求逆序數的算法正的是很贊……貼下以後當模板…… 題目 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; struc

原创 【記憶化搜索】PKU-2044-Weather Forecast

經過這題,我發現原來用vector做參數是會超時的,難怪沒人這樣用來啦…… 題目 #include<iostream> #include<vector> using namespace std; struct T { int a[4];

原创 【樹形dp】ZOJ-3326-Tree of Tree

這道題和昨晚在CF上做的一道題很像,都是樹形dp。剛開始時,我寫了個很爛的代碼水過了,時間複雜度爲O(n^3).不過一看覺得不對了,人家的都是0ms的,於是去網上找題解優化,時間就降爲O(n^2)了,終究還是自己太水了…… 題目 優化前,

原创 【深搜+模擬】VK Cup 2012 Round 1-E. Polycarpus the Safecracker

CF上的題考的就是思維啊,而這道題就是要用到十分巧妙的處理…… 題意:給定一個素數作爲一個正方陣的第一行,而下面幾行都要補一個素數進去形成一個對稱矩陣,即當前矩陣與轉置後的矩陣相等。 如:239                      

原创 【樹狀數組】PKU-2152-Fire

一道處理的很巧妙的樹狀數組……都是參考大牛的代碼的…… 題目 大牛題解 #include<iostream> #include<vector> using namespace std; template<class T> T Max(T

原创 【記憶化搜索+圖論】HDU-2833-WuKong

具體題解 題目 #include<iostream> using namespace std; template<class T> T Max(T x,T y){return x>y?x:y;} template<class T> T M

原创 【DP+記憶化搜索】PKU-1191-棋盤分割

題目 sum[x0][y0][x1][y1]表示的是左上角爲(x0,y0),右上角爲(x1,y1)的矩形的每個點分數總和的平方;dp[n][x0][y0][x1][y1]表示的是左上角爲(x0,y0),右上角爲(x1,y1)的矩形再經n刀

原创 【DP】-Codeforces Round #110 (Div. 1)-C. Cipher

個人覺得很神奇的一道DP…… 題目要求求出給出字符串經過題目要求的變換可以得到多少各不同的字符串。可以證明的是,這些字符串加起來的和都一樣,所以dp[i][j]的i表示的是字符串的長度,j表示的是字符串所有字母加起來的和,狀態轉移方程爲d

原创 【dfs+分治】VK Cup 2012 Round 1-C. Abracadabra

這道題的思路真是太神奇了,在參考某大牛的代碼後恍然大悟,對其思維無限膜拜啊……用了分治法,具體思路看代碼…… 題目 #include<iostream> using namespace std; template<class T> T M