之前有一些寫過了大概扔在奇奇妙妙的地方…
可能翻一下blog能翻得到的
瞎寫一下最近的題吧
2
242^
224這個狀壓和爆搜尷尬的地位…90
s90s
90s果斷狀壓了
把包從大到小排序,記乙個pai
rpair
pair
的d p[
mask
]dp[mask]
dp[mas
k]表示裝完狀態裡的這些東西需要用到哪個包,並且最後乙個包剩下多少容積,這顯然是從大往小裝並且能裝的越多越好嘛…
轉移列舉0
00位,可以low
bi
tlowbit
lowbit
優化聽說複雜度是靠譜的2n−
1n
2^n2n
−1n?
隨意想一下,我們可以首先把這些矩形拉到互不相交的位置
即保證每個矩形上下都是沒有矩形的
那麼,假如兩個矩形先後順序最後需要調換的話,顯然這個厚度需要能讓他們調換
即滿足任意兩個需要交換的矩形都能交換,那麼這是合法的
線段樹隨意維護一下?
樹狀陣列也可以的
這個題妙
首先有乙個nlo
g2
nnlog^2n
nlog2n
的做法,即直接分治然後討論轉移
這個d
dd的性質,如果我們令g[i
]g[i]
g[i]
表示只考慮d
dd的限制,i
ii最遠能從**開始轉移
顯然g [i
]g[i]
g[i]
單調不減,可以用乙個單調佇列預處理出來
那麼我們考慮怎麼滿足c
cc的限制
約定m id
midmi
d表示[l+
1,r]
[l+1,r]
[l+1,r
]區間的最大值的位置,則sol
ve(l
,r
)solve(l,r)
solve(
l,r)
表示處理[l,
mid−
1]
[l,mid-1]
[l,mid
−1]對[mi
d,r]
[mid,r]
[mid,r
]的轉移
顯然我們這一段區間需要滿足c
cc的限制均為c[m
id
]c[mid]
c[mid]
那麼思考如何轉移
對於g [i
]>=m
id
g[i]>=mid
g[i]
>=m
id,直接結束轉移
對於g [i
]>=l
g[i]>=l
g[i]
>=l[i
]<
lg[i]g[i]−
(mid
−1
)
mid]
i-(mid-1)i−
(mid
−1)mid]
,i
ii每向後移動一位只會多乙個可以轉移的位置,用乙個變數o(1
)o(1)
o(1)
維護轉移即可
對於g [i
]<
lg[i]g[i]−
(mid
−1
)>=c
[mid
]i-(mid-1)>=c[mid]
i−(mid
−1)>=c
[mid
] lo
g2
nnlog^2n
nlog2n
的複雜度,但是對於每個點,滿足l
<=g
[i
]
dl<=g[i]
l<=g
[i]d的區間僅會有乙個,所以複雜度是nlo
gn
nlogn
nlog
n對於第三個操作,在每個區間中指標最多隻會移動min
(x,l
en−x
)min(x,len-x)
min(x,
len−
x),那麼這個是啟發式合併的複雜度,也是nlo
gn
nlogn
nlogn的
對於第四個操作,顯然是nlo
gn
nlogn
nlog
n所以就變成優越無比的nlo
gn
nlogn
nlog
n了??
感覺考場上遇到這個複雜度分析的題就算想到了也會認為是nlo
g2
nnlog^2n
nlog2n
的然後自閉?
好題首先一看就是個最大權閉合子圖的裸模型
然後*****的以為是奇妙技巧建邊跑假的複雜度的網路流?
然後就想不出來奇妙技巧了…
然後…發現這個東西我是根本不會想的啊…從來都是最小割=最大流,從來沒有轉化回去更改題意來做…
首先,我們可以把每個點的座標變為(xi
∗h,y
i∗w)
(x_i*h,y_i*w)
(xi∗h
,yi
∗w),因為視野可以看成乙個(−w
,−h)
(-w,-h)
(−w,−h
)的向量,相互乘一下就變成(−1
,−1)
(-1,-1)
(−1,−1
)的向量,那麼視野就變為了直角
然後再旋轉一下座標系,使得視野變為在第二象限
按x
xx從小到大掃,現在我們變換了問題
從每個保安流流量到物品那裡,求最大流多少
那麼每個保安,肯定先流y
yy最小的,流完之後再流y
yy次小的
以此類推
過程用乙個set維護
要記住這種 把最小割換為最大流,然後轉化為貪心問題的套路啊
PA2014 Bohater 題解(貪心)
前言 一道經典貪心題。題目鏈結 題目大意 你有 z 滴血,要打 n 只怪。打第 i 只怪扣 d i 滴血,回 a i 滴血。問是否存在一種能夠通關的打怪順序。顯然所有怪分為兩種 扣血的怪 d i a i 和回血的怪 d i leq a i 那麼貪心策略是什麼?對於回血的怪,我們有若干貪心策略,例如 ...
練習2部分題解
問題 g 汽水瓶 時間限制 1 sec 記憶體限制 128 mb提交 93 解決 45 201501010119 提交狀態討論版 題目描述 有這樣一道智力題 某商店規定 三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?答案是5瓶,方法如下 先用9個空瓶子換3瓶汽水,喝掉...
cqoi2015部分題解
只做了前三題。t1 選數 先把題目轉化為求選n個數最大公約數為1,不用說了。假定f i 為選出n個數最大公約數為i的方案數。由於題目中有條件h l 10 5,所以i 10 5即可。令l l 1 i,r h i f i r l n sigma f a i r l 最後的r l為減去全部選擇乙個數的方案...