原创 BZOJ4385/POI2015Wilcze doły

思路: 如果碰到一題你沒有什麼思路,不妨先想想最終的答案是什麼樣子的。這個方法對一類構造題和dp都很好用。 首先假設我們已經有了一個右端點,如果要使用修改的話,我們肯定是想讓左端點儘量的靠前,那麼這就要求我們要讓這次修改的收益

原创 BZOJ 2125 最短路.

來源:Bzoj2125:http://www.lydsy.com/JudgeOnline/problem.php?id=2125. Time: 2015.7.11. Programmer: sherlock_zhuang. St

原创 BZOJ 4412/Usaco2016 Feb Circular Barn(構造)

思路 一下是來自lxe神犇的寫法: 首先我們先破環成鏈。。。 將所有的值減掉1剩下的就表示多出來的 由於每次都是往順時針方向走(一開始看錯題了)因此我們找到一個能夠擴展到最遠的起點 即不會有其他的牛走過這裏 證明yy

原创 Noip 備戰篇(三)

【小K 的農場(farm)】 new oj 1750 題目大意:現在有若干個農場,每個農場裏面有若干個作物,現在給你一些限制條件,具體是: 如果每行的第一個數是1,接下來有三個整數a,b,c,表示農場a 比農場b 至少多種植了

原创 BZOJ 2400(網絡流最小割)

思路: 首先比較顯然能夠想到二進制拆分 每一位的貢獻是獨立的 然後可以用最小割解決 S->i 表示這一個位置是0 inf i-T 表示爲1 inf 然後所有的邊保留 1

原创 niop準備 題目分類

【sg函數】 new oj 1755 分裂遊戲 : 將每一個單獨的石子看成一個遊戲; sg(i)表示一個石子距離結束位置i 有堆石子遠 ;類比一個有向無環圖;每次可以從起點往後面走;這樣走到不能走的就輸了(sg[1]=0)

原创 Noip 備戰篇(一)

題目: 【小Y的炮】 new oj 1065: 題目大意: 給你一些山的高度,以及一些炮的數據【H,D】意思是說這個炮可以攻擊H高度以內的山並且每一次可以減少山的高度爲D,現在告訴你一共可以發射k次(總共),問在轟掉最多山的

原创 BZOJ1283 序列

思路: 這種題目是很經典的模型,相似的還有網絡流24題中的最長k可重區間集問題,NOI的志願者招募等等。一般來說有兩種方法: 1.可以根據流量平衡列方程,然後添加一個變量將不等式化成等式。具體看NOI2008的志願者招募。

原创 BZOJ1063樹形dp

思路: 網上題解蠻多的就不仔細講了。 首先一個比較明顯的想法是先確定最少要多少代價 再統計方案 然後首先貪心的想的話肯定是越深的節點越有可能會花費更多的代價 所以想辦法讓深層節點儘量在一條鐵路上 於是用樹鏈剖分可以想到

原创 Noip 備戰篇(四)

【最小生成樹】 new oj 1802 題目大意: 給定一個邊帶正權的連通無向圖G=(V,E),其中N=|V|,M=|E|,N個點從1到N依次編號,給定三個正整數u,v,和L (u≠v),假設現在加入一條邊權爲L的邊(u,v

原创 Noip 備戰篇(二)

題目: 【 Beads】 new oj 1585: 題目大意: 現在給你一個數字的序列,現在你可以把他分成每段k長度的若干段,最後一段不足k的捨棄,求最多能得到多少相同的序列?(1,2,3和3,2,1是一樣的。)(n<=2

原创 BZOJ 2088/POI 2010 Teleportation

思路: 用到了分層的思想,網上的題解看不懂,orz hta 的方法: 首先我們把1當成源點 2當初匯點(並不是網絡流 只是這樣寫起來方便) 然後將與1直接相連的點設成第一層(集合s1) 與2直接相連的點設置成倒數第一層(集合

原创 BZOJ2803: [Poi2012]Prefixuffix

思路: 網上有不少這裏就不說了 卡哈希我的代碼過不去看別人的好了

原创 BZOJ2101(DP)

首先容易想到n^2 f[i][j]表示i-j位置的先手最大值 f[i][j]=sum[i][j]-min(f[i+1][j],f[i][j-1]); 由於數組開不下 所以轉化角度 第二位滾掉 #include<iostream> #

原创 BZOJ1458 士兵佔領

思路: 上下界網絡流還是可以寫的吧。。。。 簡潔一點的方法應該是假設全部填滿,然後跑最大流看能夠刪掉多少 #include<iostream> #include<cstdio> #include<cstdlib> #include<a