Binary Search
文章平均质量分 75
unixcsir
Coding Every Day~
展开
-
hdu_1969_NWERC2006_Pie(二分)
題意: F+1個人平分N個圓,第i個圓的半徑爲ri,使得每個人得到的面積相等且使得分到的面積儘量的大,每個人得到的部分不必是一個完整的圓形 分析: 初看這個題目以爲是一個數學題,二分可以說是比較完美的解決這個題目了 二分枚舉分到的面積area,判斷則是對每個圓可以切割出多少個這樣的面積,所有圓可以切割的分數如果多於F+1個人,那麼當前面積可以切分,使用二分逼近最終得到結果, 需要注意的是,二分的時原创 2013-04-10 19:25:22 · 505 阅读 · 0 评论 -
LA_2678 - Subsequence( 二分 )
題意: 一個序列S,其中的元素全部都是正整數,求最短連續的子序列,使得其和小於等於s 分析: 由於全部元素是正整數,設f[i]爲前i個的和,那麼f是遞增的 f[j]-s >= f[i],其中i越大連續序列的長度越小,所以這裏可以使用二分求出i,時間複雜度O(nlogn). Code: #include #include #include #include using namespace s原创 2013-04-11 20:27:07 · 440 阅读 · 0 评论 -
LA_3635/HDU_2333 Assemble (二分)
題意: 讓你去購買不同總類的配件個一個,配件總數爲n,購買的配件總價格不能超過b,且使得所購買的配件中的質量係數中最小的最大 分析: 最小最大的問題,二分枚舉能不能構成不小於k的質量係數,若能構成則ans >= k,否則ans < k. Code: #include #include #include #include #include using namespace std; #de原创 2013-04-11 16:59:03 · 448 阅读 · 0 评论 -
LA_2965 Jurassic Remains
題意: 給定n個大寫字母組成的字符串,選擇儘量多的串,使得每個大寫字母都能出現偶數次 分析: 不難想出枚舉每個字符串選擇與否的暴力算法可惜運算量高達2^24 由於字符串只考慮每個字母的奇偶情況,用0表示字符出現的次數爲偶數,1表示出現的次數爲基數,可以使用stl中的map建立前n/2個字符串所有情況的映射,然後枚舉後n個的時候可以從映射中二分查找 Code: #include #include原创 2013-04-12 14:35:36 · 464 阅读 · 0 评论 -
uva_10635_Prince and Princess ( LIS )
分析: 如果使用LCS的DP算法,時間複雜度O(n*m),可惜這裏的n高達250*250,時間不允許的,題目說明了一個序列中的元素唯一,所以可以將序列A離散化,然後序列B中的元素如果A中存在相同的可以mark下來,如果不存在直接刪除,這樣可以轉換成LIS,時間複雜度O(nlogn). Code: #include #include #include #include #include #原创 2013-04-13 12:37:08 · 579 阅读 · 4 评论 -
uva_11627_Slalom( 二分 )
題意: 題目意思比較就是有n個障礙你必須通過,障礙的左面的座標已經給出,障礙的縱座標單調遞增,你有s個鞋子,每個鞋子的垂直速度是sj, 且你的水平速度不能大於vh,問最快通過所有障礙的鞋子的最大速度是多少? 分析: 由於橫速度恒定,二分枚舉速度。只要將當前障礙到下一個障礙之間的距離分解,然後求出下一個橫區間的範圍,然後判斷這個區間是否為合法區間就得出這個速度是否可行 Code: #inc原创 2013-04-24 15:15:26 · 449 阅读 · 0 评论 -
uva_10125_Sumsets( 二分 )
題意: 給你一個整數集合,要求你從中找出一個最大的d,使得a+b+c=d,其中a,b,c,d都是集合s中的不同元素 分析: 如果暴力的話O(N^4),但是可以使用二分解決,就是美劇a+b後對其結果排序,接着枚舉d-c如果二分查找a+b的結果中存在a+b = d-c,那麼這個d就是一個解 時間複雜度O(N^2*log(N*N)) Code: #include #include #in原创 2013-04-26 15:41:14 · 468 阅读 · 0 评论