原创 bzoj3506 [Cqoi2014]排序機械臂

splay的區間操作(區間反轉) 由於splay表示的是區間,對於重複元素的查找可能會出錯(只是splay的實現導致的,沒有辦法) 離散化那個地方有點小技巧,主要是針對數據的重複性,也就是去重。 我這裏有對這個問題的小結:http

原创 bzoj3504 [Cqoi2014]危橋

無向圖最大流,加上超級源匯,以及神奇的判斷 在處理a1的流會走到b2的情況時卡住了,果斷看題解發現把b1和b2反一下再做一次最大流就行了(這是爲什麼呢,沒看見證明= =) 先放在這裏,等我想下再補充證明 4天后才補充證明= =! 如果

原创 bzoj3293 分金幣

就是中位數的題。 我們令xi爲第i-1個人給i的金幣數(如果小於0就是i給i-1金幣)。 那麼每個人最後的金幣數可以用方程表示爲: a1 + x1 - x2 = p a2 + x2 - x3 = p . . an-1 + xn-1 - x

原创 UVALive3211 Now or later

2-SAT + 二分 作爲第二道2-SAT沒什麼好說的很簡單,相對LA3211已經顯示出基本模型了 #include<bits/stdc++.h> using namespace std; const int MAXN = 2000;

原创 hdu4027 Can you answer these queries?

這個題乍一看沒思路啊,但後來發現每個數小於2^63,開方至多6次就變成1了,然後就不用開方了,只有這麼暴力了。 (似乎我的代碼裏有一些沒用的東西= =) #include<algorithm> #include<cstdio> #incl

原创 寒假水題集

2月1日 1、UVALive 4864 很水的數位dp 2、CF81D 隨便構造(好像我用的那個構造本來是錯的,但是AC了) 3、UVALive 5058 似乎涉及到拓撲序,組合數之類,但是

原创 CF534

終於寫了一篇div2的題解..我還是很弱 A. Exam     題意就是構造一個排列使得相鄰兩項的差值大於1。     n <= 3 的情況手算就可以出解。     n >= 4 的情況可以按如下的方式

原创 UVA11396 Claw Decomposition

二分圖判定 題目大意: 給出一個簡單無向圖,每個點的度爲3。判斷能否將此圖分解成若干爪的形式,使得每條邊都只出現在唯一的爪中。(點可以多次出現在爪中) 解題思路: 可以將爪的中心點視爲關鍵點,對於每個關鍵點只屬於唯一的爪中,對於關鍵點周圍

原创 UVALive2238 Fixed Partition Memory Management

這道題本來很水,但無奈官方數據出錯,標程都wa了(後來數據恢復了),讓我白忙了2小時,有點難過55... 最後在UVA1006上才交過了= =! 算法思路是: 對於一個內存塊x,在裏面運行的程序的運行時間爲t1, t2, t3, ...,

原创 hdu3397 Sequence operation

一個很繁瑣的線段樹的題,對於一個樹節點表示的區間 [L, R] 我們要維護以左端點爲起點的連續最長的1,以右端點爲結尾的連續最長的1,以及這個區間連續最長的1;因爲這個題有反轉操作,我們還要記錄0的情況,其它的就很常規了。 反正要細心,錯

原创 CF258E Little Elephant and Tree

注意到每個操作都是對子樹上色,我們先dfs得到dfs序,那麼子樹u可以表示爲區間 [dfn[u], dfn[u] + size[u]) 其中cnt[u]表示子樹u的節點數,這樣我們就將上色的操作轉變成了線段樹的區間覆蓋。有了dfs序之後,

原创 線性規劃與網絡流24題

飛行員配對方案問題 二分圖最大匹配 太空飛行計劃 最大權閉合圖 最小路徑覆蓋問題 最小路徑覆蓋 魔術球問題 多種解法:二分、匈牙利算

原创 hdu1542 Atlantis

求矩形面積的並,這個題應該是線段樹剛剛出現在競賽時要做的題。 這個題的主要思想就是掃描,我們將所有矩形豎直方向的兩條線段,都拿出來排序,然後掃描用線段樹維護覆蓋的線段長度即可。 對於如上的矩形給所有豎直線段排序後就可以得到下面的圖 我

原创 poj3667 Hotel

經典問題,就是線段樹[L, R]上保存3個信息,分別表示以L開頭最多連續的空格,R爲結尾的最多連續空格,這段區間最大的連續空格。然後就可以寫代碼了。 (爲什麼我的線段樹這麼醜) #include<bits/stdc++.h> using

原创 hdu1402 A * B Problem Plus

很裸的FFT。 原理到處都有(看算法導論就可以學懂了)。 #include<bits/stdc++.h> using namespace std; typedef complex<double> cpx; const int MAXN