傳送門:luogup5241
一波找規律嘗試出n
4n^4
n4分做法,然而實際上是個貪心構造轉dp:
考慮如何構造出一組合法序列:
首先讓所有邊首尾相連形成鏈,如果scc數量產生變化,就縮鏈上開頭的一部分。
在兼顧scc數量變化的同時,其它邊均貪心地用於串鏈,直到所有點都被串在了鏈上——這時就可以隨便連了。
在沒有將全部點串起來之前,設f[i
][j]
[k
]f[i][j][k]
f[i][j
][k]
表示已經串起了前i
ii個點,scc數量變化了j
jj次,前k
kk個點縮在一起的方案數
在所有點串起來之後,設g[i
][j]
g[i][j]
g[i][j
]表示連了i
ii條邊,前j
jj個點縮在一起的方案數。(注意i≤(
n2)+
(j2)
i\leq +
i≤(2n
)+(2
j))
f ,g
f,gf,
g轉移均可以字首和優化,複雜度o(n
3)
o(n^3)
o(n3)
#include
using
namespace std;
const
int n=
405,mod=
1e9+7;
int n,f[n]
[n],g[n*n]
[n],ans[n*n]
;inline
voidad(
int&x,
int y)
inline
voiddc(
int&x,
int y)
intmain()
ad(f[j+1]
[i+1
],v);}
}for
(j=0
;j+1
++j)
for(k=j+
1;k++k)
ad(g[n-
1+j]
[k],f[j]
[k])
;for
(i=n-
1;i<=n*
(n-1);
++i)
}for
(i=1
;i<=n*
(n-1);
++i)
return0;
}
洛谷2019 3月月賽 T2
題幹 洛谷同款 t2?看似比t1簡單些 二維字首和嘛?多簡單 我天天拿二維字首和水dp 這是字首和的預處理 2333 處理出來所有的情況 某個地方要加上mod再 mod 如果沒有這一步 那麼 70pts 然後附帶5 的分值飛走。2333 然後.就a掉了 include using namespace...
洛谷4月月賽R2
打醬油.線性篩約數和就可以 o n 了.include include include include include include using namespace std typedef long long ll const int n 1e6 5 inline ll read while c ...
洛谷11月月賽 T2 不開心的金明
傳送門 一樣大水題,不過我現在都不知道我是怎麼被hack的。題目裡有這麼一句話 要求購物單上所有的物品 的極差 最貴的減去最便宜的 不超過3 資料範圍裡還有這麼一句話 min vi vi min vi 3 那麼,其實只有四種 了。我們稱它們為0,1,2,3 然後預處理每種 選i個的最大價值 直接暴力...