不想單開的就寫在這裡了
都還是挺不錯的啊
許可權題沒有
又是被ozy秒殺的我
不考慮嚴格大於的話你直接ai,bi取個max就過了…
現在要考慮嚴格大於,相當於每個矩形,都是一條在ai,bi中的邊
我們定義這個數被作為一次長,當且僅當有一條新的邊指向了他
最後我們就要給所有邊定向,顯然要求每個數最多只有乙個入度,貢獻就是出度*權值
顯然所有的連通塊要不就是環套樹要不就是樹
是樹的很簡單,只有乙個點取了他所有度來作為貢獻,最後加上最大的那個點的權值就行了
否則的話每個點都會有乙個入度,直接算答案就行了
並查集維護一下
還是挺類似bzoj4883的
只能往資料隨機這方面靠了
一開始做了乙個每個點找前面a,b最小的1k個暴力做,然後滾出了
我們可以確定乙個闕值m
mm,使得答案在m
mm以內的所有數都被全部掃完一遍
大概確定個m=8000,後面沒有被掃到的數暴力做
就能過了…
資料隨機的玩意還是憑感覺啊…
真是沒腦子了
糊了半天才發現沒把下邊界容斥掉根本就沒辦法記憶化
別管根號的回文數枚舉直接dp就可以了
預處理sum
[i
]sum[i]
sum[i]
表示能組成位數為i
ii的(含前導零)回文數有多少種方案
然後常規數字dp
被ozy忽悠去寫辣雞kd樹…
顯然可以把貢獻拆成每個點的
每個點的貢獻就是i−p
re[i
]i-pre[i]
i−pre[
i],其中pre
[i
]pre[i]
pre[i]
表示和i
ii顏色相同的前乙個位置是什麼
然後不考慮修改的話每個詢問就是個二維數點
在( l,
l)
(l,l)
(l,l
)為左下角和(r,
r)
(r,r)
(r,r
)為右上角的矩形數點的權值和
修改的話,直接再加乙個點進去,就是權值取負的.
然後cdq就可以了
性質就是每個字串的最小迴圈節長度就是i−n
ext[
i]
i-next[i]
i−next
[i],其中這個nex
tnext
next
是k mp
kmpkm
p的next
next
next
陣列我們從頭開始給這個字串編號,遇到乙個新字元就tot
+1
tot+1
tot+
1,否則就拿出舊編號給他
顯然這些就是本質不同的字串,其他只是乘乙個組合數而已
爆搜這些本質不同的字串,每次做一發kmp
kmpkm
p狀態數大概只有400w個,然後就可以過了…
哦其實狀態數是o(b
ell(
n)
)o(bell(n))
o(bell
(n))
的…因為就是集合劃分數
感謝ozy的思路
首先肯定要列舉這個母串,可以用一些諸如是否是約數,每個字母的數量是否能組成總共字母的數量的小技巧來優化
然後區間dpf[i
][j]
f[i][j]
f[i][j
]表示[i,
j]
[i,j]
[i,j
]能否被全部表示出來
兩種轉移
要不就是分成兩段,這兩段都能被表示出來
要不就是在最後的位置匹配母串的乙個字元,這個字元是確定的,然後詢問f[i
][j−
1]
f[i][j-1]
f[i][j
−1]記憶化一下可以寫的更舒服
感謝ozy的diss讓我加速想出了這題
可以發現合法的路徑一定是從乙個點往下走一段,橫著走一段,再往上走一段
直接對x軸分治,找到每個點到這個中軸線最高高度是多少
然後按這個高度排序,路徑可以拆分為a−u
1+b+
u2
<=k
a-u1+b+u2<=k
a−u1+b
+u2<=k
其中a是較矮那段的長度,b是較高那段的長度,u1是a的高度,u2是b的高度
排序一下從上往下掃就可以了,注意算重的情況,複雜度是nlo
g2
nnlog^2n
nlog2n
的不難發現可以大膽猜想中間那一段的雷數是唯一的
我們可以求出從第3行開始,每次下移3行的行的雷數,就是3,6,9,12,15…行的
同理,我們也可以求出從第n-2行開始,每次上移3行的雷數,就是n-2,n-5,n-8,n-11…行的
怎麼求的話,以第3行為例,用第二行求出1~3行的和,再用第一行求出1~2行的和就可以知道了
如此n有兩種情況,如果n-2模3不為零的話,顯然我們可以每三行求出其中不同兩行的和,這樣第三個行的和也就確定了
如果模3為0的話,顯然n/2+1這一行模三為0,於是這一行在一開始就能知道
所以無論如何我們都可以知道n/2+1這行的和…直接掃就可以了
一開始太過於糾結具體的填法…就忽略了某些行的數量是一定的,因為具體只可以有乙個2n2^
2n的做法…
題目條件限制很舒服…很好證明這個最長上公升子串行一定是a,b兩串的最長上公升子串行之和
證明的話可以考慮反證法…不展開了
現在的方向就是要在序列中刪除一些數,使得lis減小
於是可以每個數拆點i,i
+n
i,i+n
i,i+
n,從i
−>i+
ni->i+n
i−>i+
n連邊,流量為代價
對於每乙個lis,從小到大連邊,大概就是min
+n
−>ma
xmin+n->max
min+n−
>ma
x,流量inf,這樣連,然後源向最小的連,最大的向匯連。由於乙個點不可能同時是起點和終點,所以直接跑最小割
其實不需要找到所有lis,用dp陣列f[i]向f[i]+1且大小滿足限制的連就可以了
顯然邊數隻會有n
2n^2
n2,非常舒服
很早就想到了這個想法只是*****的認為可能同時是起點終點就不寫了,去了個廁所冷靜一下發現我假了2333…
Lydsy1706月賽 大根堆 亂搞 啟發式合併
description 給定一棵n個節點的有根樹,編號依次為1到n,其中1號點為根節點。每個點有乙個權值v i。你需要將這棵樹轉化成乙個大根堆。確切地說,你需要選擇盡可能多的節點,滿足大根堆的性質 對於任意兩個點i,j,如果i在樹上是j的祖先,那麼v i v j。請計算可選的最多的點數,注意這些點不...
bzoj4919 Lydsy1706月賽 大根堆
給定一棵n個節點的有根樹,編號依次為1到n,其中1號點為根節點。每個點有乙個權值v i。你需要將這棵樹轉化成乙個大根堆。確切地說,你需要選擇盡可能多的節點,滿足大根堆的性質 對於任意兩個點i,j,如果i在樹上是j的祖先,那麼v i v j。請計算可選的最多的點數,注意這些點不必形成這棵樹的乙個連通子...
日期問題合輯
問題 a 判斷閏年判斷某年是否是閏年。輸入只有一行,包含乙個整數a 0 a 3000 一行,如果公元a年是閏年輸出y,否則輸出n 2006n include int main 問題 b 細菌繁殖一種細菌的繁殖速度是每天成倍增長。例如 第一天有10個,第二天就變成20個,第三天變成40個,第四天變成8...