這是鏈結
考慮動態規劃,設fsf_
fs表示$s 集合中
的點的劃
分的滿意
度之和,
設集合中的點的劃分的滿意度之和,設
集合中的點的
劃分的滿
意度之和
,設t_表 示表示
表示s集 合中
的點是否
合法
,集合中的點是否合法,
集合中的點是
否合法,
w_s表示表示
表示s$集合中的點的權值之和,那麼可以得到方程:
f s=
∑t⊆s
fs−t
×tt×
(wtw
s)
pf_=\sum_f_\times t_\times (\frac)^
fs=t⊆
s∑f
s−t
×tt
×(ws
wt
)p考慮用子集卷積去優化這個式子,但是發現f
ff需要自己卷自己,不過沒有關係,因為子集卷積時是按照集合大小分層處理,s−t
s-ts−
t的集合大小必定小於s
ss集合的大小。
然後考慮將式子變形化成卷積的形式:
w sp
×fs=
∑t⊆s
fs−t
×tt×
wt
pw_^p\times f_=\sum_f_\times t_\times w_^
wsp×f
s=t
⊆s∑
fs−t
×tt
×wt
p直接分層用子集卷積優化即可,記得最後要除以乙個wsp
w_^ws
p。
/************************************====
* author : ylsoi
* time : 2019.2.21
* problem : luogu4221
* e-mail : [email protected]
* ***********************************=*/
#include
#define rep(i,a,b) for(int i=a,i##_end_=b;i<=i##_end_;++i)
#define drep(i,a,b) for(int i=a,i##_end_=b;i>=i##_end_;--i)
#define debug(x) cout<<#x<<"="<#define fi first
#define se second
#define mk make_pair
#define pb push_back
typedef
long
long ll;
using
namespace std;
void
file()
template
<
typename t>
void
read
(t &_)
const
int maxn=21+
3;const
int maxw=(1
<<21)
+10;const
int mod=
998244353
;int n,m,p,w[maxn]
,g[maxn]
;int lim,sum[maxw]
,f[maxn]
[maxw]
,g[maxn]
[maxw]
;void
inc(
int&_,
int __)
intqpow
(int x,
int y)
return ret;
}struct union_set
void
reset()
}u;void
fmt(
int*a,
int ty)
void
subset()
}int
main()
rep(i,
1,n)
read
(w[i]);
lim=
1
0,lim-1)
int cnt=0;
rep(i,
1,n)if(
(1<<
(i-1
)&s)
&& u.
find
(i)==i)
++cnt;
g[__builtin_popcount
(s)]
[s]=
(flag || cnt>1)
*qpow
(sum[s]
,p);
u.reset()
;//printf("%d %d\n",s,g[s]);
}subset()
;printf
("%d\n"
,f[n]
[lim-1]
);return0;
}
WC2018 州區劃分
點此看題 設d p s dp s dp s 為選出來的點狀壓為s ss,所得到的滿意度總和,轉移 d p s 1 f s i s dp i g s i dp s frac sum dp i times g s i dp s f s 1 i s d p i g s i 其中f s f s f s 是w...
WC 2018 州區劃分
給乙個無向圖 g v,e 滿足 v 21 對於某一種將 g v,e 劃分為k個的有序集合方案,若每乙個子集 g i v i,e i e i 都不存在尤拉迴路,則會對答案貢獻為 其中,x 為集合元素,w x 為元素 x 的權值。題解 被題意坑成cu 我還是太菜了 其實很顯然我們會得到乙個 dp 設 f...
WC2018 州區劃分
題目 就當那個判斷乙個州不合法的條件是存在尤拉迴路吧 一張無向圖存在尤拉迴路的條件是 圖連通不存在度數為奇數的點 於是我們列舉每乙個子集,可以在 o 2 nn 2 的時間內判斷乙個集合是否能獨立成為乙個州 之後我們設 dp i 表示選取狀態為 i 的時候的答案,s i 為這個狀態對應的城市的人口之和...