原创 hdu 1381

題意: 判斷字符串中有多少個長度爲N的子串,且字符總類不會超過NC種。 解題思路: 字符串hash 注意: 無 //字符串hash #include <stdio.h> #include <string.h> #in

原创 poj 3667(區間合併)

題意: 有N個房間 有兩種操作: 1 表示當前有Di個人要入住,且房間號必須連續,並輸出最左邊滿足要求的,沒有滿足要求的輸出0 2 表示從Xi房間開始總共Di個房間要退房。 解題思路: 在線段樹的結構體裏增加幾個域值:

原创 hdu 3308(區間和並)

題意: 求最長上升子序列的最大長度。 兩種操作: Q: 某一段區間的最長上升子序列的最大長度爲多少 U: 某一點 = val 解題思路: 如果單單求最長上升子序列,我們可以通過dp,或者分治的思想來求。因爲此處操作多,所以

原创 hdu 1506

題意: 求一段區間內的最大連續和,且該段區間的值要大於等於這段區間的最小值,並和 = 最小值*區間長度; 解題思路: 利用單調棧可求. #define MAXN0 100011 typedef __int64 LL; #incl

原创 poj 3273(二分+貪心)

題意: 有N天,第i天消耗money_i錢數,現在讓你將這N天分成M份,且必須是連續的,求M份中消耗的和的最小值。 解題思路: 二分消耗結果,看是否能分成M份,如果<=M份說明當前和太大,如果>M,份說明和太小,以此作爲二分依

原创 hdu 1542(掃描線+線段樹區間更新)

題意: 求矩形面積的並 解題思路: 先將x座標離散化,掃描線從底向上掃描。所以通過步驟,我們只記錄平行與x走的線段,定義結構體 struct segment{ int l,r,h;// l表示該選段的左座標,r表示該線段的

原创 hdu 4768(二分)

題意: 學校內有N個社團,且由於該學校的人數衆多,所以第i個社團分發廣告時,是從Ai開始,到Ai+K*Ci<=Bi,且Ai+(K+1)*Ci<=Bi,現要你求得是一個學生的編號,且滿足該學生拿的廣告份數是奇數份,且該學生最多隻能出現一

原创 poj 2796(單調棧)

題意: 求 一段區間範圍內的和*這段區間的最小值最大 輸出最大值和該區間的左右端點 解題思路: 利用單調棧的思想O(n) (遞增棧:棧底最小,棧頂遇到比他小的值出棧) (遞減棧:  與上述相反) 首先我們可以預處理前綴和

原创 hdu 4190(二分)

題意: 給你N個城市每個城市有相應的人口,有B個選票箱,要求每個城市都至少有一個選票箱,且先要使N個城市中得選票箱的票數的最大值最小化。 解題思路: 二分結果,求上界 注意: 無 #include <stdio.h> #

原创 poj 3122(二分)

題意: 現在有N個餅,現在要給F+1(包括他自己)分相同大小的pie,求每個人最多能分多少,且每個餅至少要分>=1的pie 解題思路: 二分結果 注意: 無 #include <stdio.h> #inclu

原创 hdu 2647(逆序拓撲排序)

題意: 就是已經知道某個人得工資要大於另外一個人的工資,且每個人的基礎工資爲888,求發給所有人工資的總和最小。 解題思路: 利用逆拓撲排序,且得到一個入度爲零的點時,他的工資是所有通往他的點的錢的最大值。 注意: 無 #i

原创 scu 3329

題目: http://cstest.scu.edu.cn/soj/problem.action?id=3329 題意: 現有n*m矩陣,求矩陣的最大矩形面積且該矩形只含0; 解題思路: 如何利用單調棧來解決這個問題? 先將A

原创 重拾博客

  本來想寫一篇總結的,但心中有的那些想法就是不能構成一張網,反正就是一句話:有夢想者不至於走投無路。 佔坑,以後開始寫博客了。

原创 hdu 1551(二分)

題意: 給你N根網線,要求分成K等份,求能等分的最大長度 解題思路: 二分結果,求上界 注意: 注意精度 #include <stdio.h> #include <string.h> #include <stdl

原创 poj 3518(二分)

題意: 給你一個數,求離他再那倆個素數之間。如 12 就在 11 與13之間,求已得的兩個素數的距離。 解題思路: 打素數表+二分 注意: 無 #include <stdio.h> #include <str