Time of Update: 2018-12-05
因為線段樹和樹狀數組很多題目用這兩種方法都可以解決,所以決定這兩種資料結構同步交叉進行學習和刷題資料:NotOnlySuccess部落格《樹狀數組》--吳豪《線段樹和樹狀數組》--郭煒單點更新 HDU 1166 敵兵布陣 線段樹 | 樹狀數組。HDU 1754 I Hate It 線段樹,求區間求最大/最小值POJ 3264 Balanced Lineup 線段樹,同上題差不多,要同時求最大值和最小值HDU 1394 Minimum
Time of Update: 2018-12-05
【題目連結】http://poj.org/problem?id=3683【題目大意】有個小鎮上有n對夫妻要舉辦婚禮,每隊夫妻都要請鎮上的牧師舉行一個儀式,但是鎮上只有一個牧師,牧師一次只能為一對夫妻做儀式。已知每隊夫妻的婚禮的起始t1和結束的時間t2,
Time of Update: 2018-12-05
題目:點擊開啟連結題目大意:有n件物品,每件物品有體積和價值兩個屬性, 一個小偷帶著一個大小為v的背包,要偷這些東西,問小偷能偷的第k大的價值是多少?思路:這題和典型的01背包求最優解不同,是要求第k大的解,所以,最直觀的想法就是在01背包的基礎上再增加一維,用來儲存前k大小的數,然後在遞推時,根據前一個狀態的前k大小的數推出下一個階段的前k個數儲存下來。d[i][j][k], 表示取前i個物品,用j的費用,第k大價值是多少在遞推d[i][j][1...k]時,先擷取上一個狀態d[i-1][j]
Time of Update: 2018-12-05
【題目連結】http://poj.org/problem?id=2296【題目大意】座標軸上有N個點,要在每個點上貼一個正方形,這個正方形的橫豎邊分別和x,y軸平行,並且要使得點要麼在正方形的上面那條邊的中點,或者在下面那條邊的中點,並且任意兩個點的正方形都不重疊(可以重邊)。問正方形最大邊長可以多少?【思路】可以很容易的看出,正方形要麼在點的上方,要麼在下方,所以是用2-SAT來判斷的,關鍵是加邊的判斷,要涉及到兩個正方形的位置的重疊關係比較麻煩。然後二分正方形的邊長即可。【代碼】#inclu
Time of Update: 2018-12-05
【題目連結】poj: http://poj.org/problem?id=2749hdu: http://acm.hdu.edu.cn/showproblem.php?pid=1815【題目大意】有n個牛棚, 還有兩個中轉站S1和S2, S1和S2用一條路串連起來。
Time of Update: 2018-12-05
題目: 點擊開啟連結題目大意:有n(0<n<=30)件物品,每件物品的價格是Pi,要用m(0<=m<=500)塊錢去買這些物品,要求買盡量多數量的物品,問買最多數量的物品共有多少總方案?思路:這題還是比較容易想到的f[i][j][k], 表示前i個物品,用費用j,買k個物品共有多少個方案得到狀態轉移方程:f[i][j][k] += f[i-1][j-c[i]][k-1];初始化f[0][0][0] =
Time of Update: 2018-12-05
【題目連結】http://poj.org/problem?id=3648【題目大意】有n-1對夫婦被一對新郎新娘邀請來參加婚禮,他們要坐在一條長桌上,可以選擇坐在左邊或者右邊。每對夫妻都不能坐在同一邊,他們只能是面對面坐著。但是這些人中有JQ,共有m對有JQ(新郎也可能有姦情,可憐的新娘...)。要求這些JQ對不能同時坐在新娘的對面。即,每一對JQ者,他們可以同時坐在和新娘同一邊,也可以一個和新娘同一邊而另一個在新娘對面即可。要求找到一種方案並輸出,如果沒有方案輸出bad
Time of Update: 2018-12-05
【題目連結】http://acm.hdu.edu.cn/showproblem.php?pid=3622【題目大意】要在座標軸上放N次炸彈,每次可以選擇兩個位置中的一個位置放置,每個炸彈都可以控制它的爆炸範圍(以置放位置為圓心的半徑為r的圓圈),問半徑最大可以多少,使得任意兩個炸彈的爆炸範圍都不重合。【思路】類似與poj 2296 ,
Time of Update: 2018-12-05
【題目連結】http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3587【題目大意】有n架飛機要著陸, 每架飛機都可以選擇“早著陸”或者“晚著陸”中的一種,不能在其他時間著陸。 給出每架飛機“早著陸”和“玩著陸”的時間,
Time of Update: 2018-12-05
【題目連結】http://poj.org/problem?id=2723【題目大意】有2*N把不同的鎖,每把鎖有一個鑰匙,所以共有2*N 把鑰匙。把2*N把鑰匙兩兩配對共分為N組。有個M層樓,每層樓有一個門,每個門上有兩把鎖,可能是相同的也可能是不同的。
Time of Update: 2018-12-05
題目連結:http://poj.org/problem?id=2642題目大意:黃銅磚是由銅和鋅兩種元素組成的,每一塊黃銅磚中1000克,銅占其中的1~999克之間。銅佔比重不同的黃銅磚是屬於不同類的。有N個黃銅磚,給出它們的銅占的重量以及價格。現在有c個客戶,每個可以要買Mi個不同類的黃銅磚,要求把Mi個黃銅磚融化後,銅站的比率為每千克在 【CMin,CMax】克之間。問每個客戶最少花多少錢可以滿足要求?分析: f[i][j][k], 代表在前i個磚中,買j個磚,重量為小於等於k的情況下,
Time of Update: 2018-12-05
【題目連結】http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=4137【題目大意】有n個宇航員,按照年齡劃分,年齡低於平均年齡的是年輕宇航員,而年齡大於等於平均年齡的是老練的宇航員。現在要分配他們去A,B,C三個空間站,其中A站只有老練的宇航員才能去,而B站是只有年輕的才能去,C站都可以去。有m對宇航員
Time of Update: 2018-12-05
題目連結:http://poj.org/problem?id=3628題目大意:有n個數字(1~100W),現在有一個數b,1<=b<=s(s為n個數字之和)。要從n個數字中選擇一些數字組合,有一寫組合的數字之和x會大於等於b,
Time of Update: 2018-12-05
今天開始刷AC自動機, 慢慢添加整理這個專輯。鑒於目前還未開始系統地學習dp,AC自動機計劃分兩個階段做,第一階段是刷到中等的,第二階段是刷帶dp的難的AC自動機。學習資料:劉汝佳《演算法入門經典-訓練指南》 P214http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdfhttp://www.cppblog.com/mythit/archive/2009/04/21/80633.html
Time of Update: 2018-12-05
連結:http://poj.org/problem?id=3211題目大意:Dearboy和他的女朋友一起洗m件衣服,共有n總顏色(每件衣服只有一種顏色)。
Time of Update: 2018-12-05
連結:http://acm.hdu.edu.cn/showproblem.php?pid=2896題目:Problem
Time of Update: 2018-12-05
題目連結:http://poj.org/problem?id=1976題目大意:某個車站有N個火車車廂,編號為1~N,每個車廂上有xi個人。這個車站還有三個火車頭,他們能拉最多m個車廂(m<=N/3),而且這m個車廂的編號要連續的。問這三個火車頭最多能拉多少個人。思路:因為m<=N/3, 所以按照貪心的思想,為了拉更多的人,每個火車頭一定是要拉m個連續的車廂。然後,為了求某段連續的車廂共有多少人,可以首碼和預先處理, 某一段和=sum[ i ] - sum[ i-m].f[i][j]
Time of Update: 2018-12-05
連結:http://poj.org/problem?id=2923題目大意:有N件傢具,每件的重量為(1 ≤ wi ≤ 100), 用兩輛車把他們來運送到目的地。這兩輛車的限載重量分別為C1, C2(1 ≤ Ci ≤ 100) , 問最少幾趟可以把所有傢具運送到目的地。這兩輛車每趟都必須一起走,即使某輛車沒載東西。思路:(一)先上自己的方法:枚舉第一輛車可能載的傢具的所有組合情況,那麼用二進位來表示狀態則共有 1<<n
Time of Update: 2018-12-05
連結:http://acm.hdu.edu.cn/showproblem.php?pid=1166分析與總結:我的第一道線段樹,留做紀念。。學習過程中,主要是遇到了一個問題:在輸入初始化線段樹時,有的是直接在build函數裡面輸入,有的是在外面先全部輸入到一個數組裡面,然後才build,代碼如下:1. int build(int cur, int left, int right){ t[cur].left = left; t[cur].right = right;
Time of Update: 2018-12-05
連結:http://acm.hdu.edu.cn/showproblem.php?pid=1754分析與總結:線段樹求區間最大值,好像也沒什麼可講的。代碼:#include<iostream>#include<cstdio>#include<cstring>#define lson(x) (x<<1)#define rson(x) (lson(x)|1)using namespace std;typedef int Type;const int