原创 習題8-5 摺紙痕(Paper Folding, UVa177)

思路: 典型的遞歸分形問題。第一步要找規律,開始時,我從旋轉的角度思考,無法求解。 之後發現以方向標畫圖: r -> ru -> rulu...發現

原创 習題8-7 生成排列(Generating Permutations, UVa11925)

思路: 冒泡排序的思想。 題目要求從123 -> 到213,可以轉換一下 從無序到有序可以用冒泡解決 123 -> 213, 213變爲123則12

原创 習題8-6 起重機(Crane, ACM/ICPC CERC 2013, UVa1611)

思路: 選擇排序的思想,每個數最多經過兩次翻轉到達正確位置。 有點疑問:複雜度不是n方麼。。。怎麼能過。。。#include <set> #incl

原创 UVA 1614 Hell on the Markets (思維 + 構造)

思路: 關鍵在於1 <= ai <= i。 結論:[1, sum(i)] 可以由 [a1, ai]組成。 證明 : 數學歸納法,n = 1顯然成立,

原创 Codeforces Round #451 (Div. 2)

C. Phone Numbers (模擬+STL) 思路: 一種節省空間的做法是map<string, int> + set<string> s[m

原创 習題8-3 比特變換器(Bits Equalizer, SWERC 2012, UVa12545)

思路: 我還蠻怕這種題的。。。。 首先計算1的個數,若s多餘t顯然無解,之後先假設所有的問號變爲t中對應字符。 再次計算st中1的個數,若不等說明問

原创 例題9-5 勁歌金曲(Jin Ge Jin Qu [h]ao, Rujia Liu's Present 6, UVa 12563)

思路: 距離暑假第一次見到dp問題已經過去4個月了。 現在以爲dp問題利用了從相同狀態出發能得到相同結果的性質。以空間換時間,記錄下結果的搜索,對於

原创 UVA 1616 Caravan Robbers (暴力 + 二分)

思路: 二分法 + 暴力 由於每個區間長度相同,所以對單位長度的區間必然最多被分爲n份。 這也就使得暴力枚舉分母成爲可能。 #include <iostream> #include <cstdio> #include <algorithm

原创 習題8-4 獎品的價值(Erasing and Winning, UVa11491)

思路: 貪心,由於數的特性,顯然貪心可得正解,每次選取可選的最大值。#include <set> #include <map> #include <

原创 UVA 1615 Highway (貪心, 區間選點)

思路: 求出每個圓與x軸上交點,即可轉化爲區間選點模型。 實現:按r排序,每次選取最右端放點。#include <set> #include <ma

原创 習題8-2 聚會遊戲(Party Games, Mid-Atlantic 2012, UVa1610)

思路: 構造題,挫敗感max。orz。。。。 容易想到ans爲sort後中間兩個字符串a,b之間的串。 由於要求長度以及字典序最小,可以按照這兩個來

原创 習題8-8 猜名次(Guess, ACM/ICPC Beijing 2006, UVa1612)

思路: 貪心法,注意精度的控制,可以採取*100再四捨五入的方式轉化爲int求解 value   round   floor   ceil    t

原创 UVA 1153 Keep the Customer Satisfied(貪心+優先隊列)

思路: 題目等價於已知n個任務的長度與右端點,求最多任務數。 非常明顯的貪心,按q選取?按d選取?都不能得到正確的解。 貪心策略: 1. 按照截止時

原创 UVA 10507 Meeting with Aliens (暴力 + 結論)

思路: 對任意一個線性序列,都由若干個"環"組成,所需的交換次數即環中元素個數 - 1,即n - 環的個數。枚舉每個開頭,複雜度O(n^2) #in

原创 Codeforces 598E Chocolate Bar

思路: 1. 首先注意到數據組數爲1e4,每次算出的結果保留,待下次查詢。 2. 定義狀態dp[i][j][k]爲邊長i,j的矩形要得到k塊所需的最