在刷去年noip集訓的題目時,遇到了一些還不錯的題目,小小的彙總一下。
更新ing
1.一個初始爲空的序列,給出n條信息,每一條信息讓你把某個數插入到指定位置,n<=300000,求最後的序列情況.
倒做,已知前導空位的數量,用zkw線段樹log(n)找到該位置。
2.給出一個長度爲n的數列,要求取其中一段,使其平均數大於等於給定的m,問方案數. n<=100000 m<=10000
將每個數減去m,問題轉化爲求有多少個區間的和大於等於0,離散樹狀數組即可。
3.n個數,選取若干個數,使得這若干個數的和爲m,數很大不能dp n<=40;
搜索前一半,再搜索另一半並與前一半hash計算方案。
4.給定一個無向圖,求一個生成樹,使得最大邊與最小邊之差最小。 V,E<=5000
利用kruscal 性質, 枚舉最小邊,裸做kruscal。
5.讓你求一個長度最小的遞增序列,序列的最後一項是n,除第一個數外,序列滿足每一個數都是令一個數的整數倍或令兩個數的和 n<=1000
數字1 是必須要的,從1開始搜索,擴展新的數,加上必要的可行性剪枝和搜索方法(只用當前最大的數和另外的數來相加擴展)。
6.給定一個數s,求一個數n,使得在序列1~n每一項前添加+/-,使得計算得到的值是s。s<=10^12
手算找出規律:n mod 4=3 or n mod 4=0 時,可以拼成0~n的所有偶數,否則可以拼成0~n的所有奇數;
先二分用等差數列求和公式逼近,在利用規律調整。
7.平面二維座標系中一些點,有一個直角邊爲A,B(A 垂直y軸,B垂直x軸)的Rt三角形,選取任意一個點爲該Rt三角形的直角頂點,問三角形最多覆蓋幾個點。
問題轉化爲三個偏序關係 x>=X, y>=Y, Bx+Ay>=BX+AY+AB
由於偏序關係的特殊性,不需要維護三個偏序,只要把點按照Ax+By排序,倒着插入,維護兩個樹狀數組,利用容斥原理即可。
8.給定一個矩陣,矩陣中有一些障礙,求該矩陣中有多少個子矩陣不包含任何障礙。
做每一行時,維護一個單調棧,棧中單調遞增的是每一列的到該行的延伸長度,並記錄棧中矩陣數量,加棧和彈棧時順便維護,並用這個值累加答案。
暫時就這些了。