原创 bzoj1609(dp)

f[i][j]表示到第i頭牛數字爲j的最少修改次數(轉移方程詳見代碼),正反各來一次,計算出所有方案的最小值。   #include<cstdio> #include<cstring> #include<cstdlib> #incl

原创 bzoj1901(動態區間第k大,樹套樹)

表示主席樹+樹狀數組懶得打了,學了樹套樹水過。。。   線段樹套平衡樹 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algor

原创 bzoj1648(水)

算回憶一下dfs吧。第7頁題好水。。。 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> using names

原创 tyvj模擬賽

算 【問題背景】 zhx幫他妹子做數學題。 【問題描述】 求: 如N=3, M=3,這個值爲1^1+1^2+1^3+2^1+2^2+2^3+3^1+3^2+3^3=56。 【輸入格式】 僅一行,包含兩個數N和M. 【輸出格式】 僅一行,

原创 poj1511(spfa)

題目大意:給出n個點和n條有向邊,求所有點到源點1的最短路之和,加上源點1到所有點的最短路之和。 到其他點的最短路之和,只需要跑最短路就行,這是個有向圖,其他點到這個點的最短路和前面的是不一樣的。 關於第二問,顯然的方法是,每一個點都跑一

原创 bzoj2388(凸包+分塊)

真心好難,代碼不好寫。 最後算是抄的clairs的代碼。 考慮分塊,每塊維護兩個標記ts,tdts,td。 那麼對於塊中一個位置ii,它的實際值爲i×td+ts+vii×td+ts+vi。 修改的時候,對於整塊,直接打標記,對於零散的暴力

原创 bzoj1610(代碼實現技巧+stl的一點運用)

n個點,求最多有多少個經過兩點的直線,他們互相是不平行的。 實際上就是要求有多少個不相同的斜率。 double害怕被卡精度,所以這裏通過排序,處理正反相同的情況,再gcd用pair最簡比斜率來表示。   主要這裏用最簡比表示斜率,排序,和

原创 poj1236(強連通分量)

POJ1236 一些學校通過網絡連接在一起,每個學校手中 有一份名單,即它所指向的點。學校A的名單中 有學校B,並不能保證學校B的名單裏有學校A。 現在有一軟件。 1.問至少發給幾個學校才能保證所有的學校都可 以得到該軟件。 2.至少加幾

原创 bzoj1179(縮點+亂搞)

  很顯然這道就是需要先求出強連通分量,然後縮點。縮點之後就是有向無環圖了。實際上這之後,各種方法就都可以了。 已知的dp:1.通過拓撲序用一個隊列來進行dp,圖是原先的圖                   2.縮點後建新圖時,將圖反

原创 bzoj3343(第一道分塊)

第1行爲兩個整數N、Q。Q爲問題數與教主的施法數總和。        第2行有N個正整數,第i個數代表第i個英雄的身高。        第3到第Q+2行每行有一個操作: (1)       若第一個字母爲“M”,則緊接着有三個數字L、R、

原创 c++ random_shuffle()

random_shuflle( a,a+n+1); 生成一個前閉右開區間的隨機序列,注意這裏序列是需要附初始值的。 並且並不只是數字,字母等也是可以的。   random_shuffle()定義在標準的頭文件<algorithm.h> #

原创 bzoj1600(排列組合)

勤奮的Farmer John想要建造一個四面的柵欄來關住牛們。他有一塊長爲n(4<=n<=2500)的木板,他想把這塊本板切成4塊。這四塊小木板可以是任何一個長度只要Farmer John能夠把它們圍成一個合理的四邊形。他能夠切出多少種不

原创 bzoj1602(倍增裸題)

裸倍增。 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; cons

原创 bzoj2453/2120(分塊)

給出一個數列,求一個區間不相同數字的個數,包含修改操作——最多1000次修改;數字最大是100W   用pre[i]記錄前一個和i相同顏色的球的所在位置 詢問l到r時,如果pre[i]<l說明在l到i這一段沒用和i顏色相同的球,則ans+

原创 bzoj1601(MST+優秀建圖==好題)

Farmer John已經決定把水灌到他的n(1<=n<=300)塊農田,農田被數字1到n標記。把一塊土地進行灌水有兩種方法,從其他農田飲水,或者這塊土地建造水庫。 建造一個水庫需要花費wi(1<=wi<=100000),連接兩塊土地需要