注意到
m m
比較小,不妨狀壓
m' role="presentation" style="position: relative;">mm。
我們設fi,
j,s fi,
j,
s表示ai
a
i用掉集合
s s
中的操作後值為
j' role="presentation" style="position: relative;">j
j的概率。 再設g
i,j,
s gi,
j,s表示
a1..
i a
1..i
用掉集合
s s
中的操作後最大值為
j' role="presentation" style="position: relative;">j
j的概率,列舉ai
a
i使用的操作集合轉移即可。
複雜度o(n
c2m2
3m) o(n
c2m2
3m)。
**:
#include
#include
#include
#include
#define up(x,y) (x=(x+(y))%mod)
#define in(x,s) ((s>>(x-1))&1)
#define ll long long
using namespace std;
const int mod=1000000007;
int n,m,c,pc[1030];
ll p[41][11][4],f[41][31][1030],g[41][31][1030],ans;
int main()
g[0][0][0]=1;
for(int i=1;i<=n;i++)
for(int
s=0;s
<(1
if(g[i-1][j][s])
for(int u=((1
up(ans,g[n][i][(1
<%mod);
printf("%lld",ans);
return
0;}
2018雅禮省選集訓3 25 bsh 分治最短路
因為是三角剖分,所以每一條對角線都把多邊形分成兩部分,於是考慮分治。先找到一條把多邊形分得比較均勻的對角線,對兩個端點做一下bfs,處理掉起點和終點分別在這條對角線兩側的詢問 分經過某個點或者經過這條邊三種情況更新 然後繼續分治直到三角形為止。選對角線的時候直接選最遠的即可。include incl...
省選專練 2018雅禮集訓 立方體Cube
困難雖然當你知道 答案是c n,m 2 n m 時甚易 如何推出 觀察計算式 我們知道當你有四個點時,乙個點旁邊有有兩個點,他們分別連線然後為4 2個但是乙個點作為起點終點使用兩次故除二 include include include include includeusing namespace s...
雅禮集訓 2018 Day4 Magic
傳送門本部分 於 這位大佬 題中要求本質不同的序列數量,不太好搞。我們考慮給相同顏色的牌加上編號,這樣所有牌都不相同。那麼如果我們求出了答案,只需要將答案除以 prod a i 就好了。恰好有 k 對 不能直接求,考慮容斥,如果我們求出了 g x 表示至少有 x 對的方案數,那麼答案即為 sum l...