BZOJ4770: 图样 (随机点值求异或最小生成树边权和)

news/2024/10/22 18:45:05/

题目描述:

在这里插入图片描述
n ≤ 50 , m ≤ 8 n\le50,m\le8 n50,m8

题目分析:

根据最小生成树有小到大加入边可以将点按照二进制最高位分组,统计所有情况的边权和。
在这里插入图片描述

Code:

#include<bits/stdc++.h>
#define maxn 55
#define maxm 9
using namespace std;
const int mod = 258280327;
int n,m,c[maxn][maxn],pw[maxn*maxm]={1},f[maxn][maxm],g[maxn][maxn][maxm],p[maxn][maxn][maxm][1<<maxm];
inline int Pow(int a,int b){int s=1;for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) s=1ll*s*a%mod;return s;}
int calc(int a,int b,int m,int k){if(a>b) swap(a,b);if(!a||k<=0) return pw[(a+b)*m];if(k>=1<<m) return 0;int &ret=p[a][b][m][k];if(~ret) return ret;ret=0;for(int i=0;i<=a;i++) for(int j=0;j<=b;j++)if((!i&&j==b)||(!j&&i==a)) ret=(ret+calc(a,b,m-1,k-(1<<(m-1))))%mod;else ret=(ret+1ll*c[a][i]*c[b][j]%mod*calc(i,j,m-1,k)%mod*calc(a-i,b-j,m-1,k))%mod;return ret;
}
int G(int a,int b,int m){if(m==0) return 0;if(a>b) swap(a,b);int &ret=g[a][b][m];if(~ret) return ret;ret=0;for(int i=1;i<1<<m;i++) ret=(ret+calc(a,b,m,i))%mod;return ret;
}
int solve(int n,int m){if(n==1||m==0) return 0;int &ret=f[n][m];if(~ret) return ret;ret=2*solve(n,m-1)%mod;for(int i=1;i<n;i++)ret=(ret+(1ll*solve(i,m-1)*pw[(n-i)*(m-1)]+1ll*solve(n-i,m-1)*pw[i*(m-1)]+G(i,n-i,m-1)+(1ll<<(m-1))*pw[n*(m-1)])%mod*c[n][i])%mod;return ret;
}
int main()
{//freopen("young.in","r",stdin);//freopen("young.out","w",stdout);scanf("%d%d",&n,&m);memset(f,-1,sizeof f),memset(g,-1,sizeof g),memset(p,-1,sizeof p);for(int i=1;i<=n*m;i++) pw[i]=pw[i-1]*2%mod;for(int i=(c[0][0]=1);i<=n;i++) for(int j=(c[i][0]=1);j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;printf("%d\n",1ll*solve(n,m)*Pow(pw[n*m],mod-2)%mod);
}

http://www.ppmy.cn/news/147410.html

相关文章

【JZOJ4770】闭门造车

Description 自从htn体验了一把飙车的快感&#xff0c;他就下定决心要闭门造车&#xff01;但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店。 一走进商店&#xff0c;玲琅满目的各式零件看得htn眼花缭乱。但是他很快便反应过来:我只要买一套好的零件就行…

chmod 4770的第一位解释

权限标志通过三个“位”来定义&#xff0c;分别是&#xff1a; setuid&#xff1a;设置使文件在执行阶段具有文件所有者的权限。比如/usr/bin/passwd&#xff0c;如果一般用户执行该文件&#xff0c;则在执行过程中&#xff0c;该文件可以获得root权限&#xff0c;从而可以更改…

Jzoj4770 闭门造车

自从htn体验了一把飙车的快感&#xff0c;他就下定决心要闭门造车&#xff01;但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店。 一走进商店&#xff0c;玲琅满目的各式零件看得htn眼花缭乱。但是他很快便反应过来:我只要买一套好的零件就行。首先它们的性…

BZOJ 4770: 图样(恶心概率期望DP)

题目 考试时推到 p p p就嫌麻烦&#xff0c;不想推了。。。 讲真写好DP预处理调一年。 时间复杂度 O ( n 4 m 2 m ) O(n^4m2^m) O(n4m2m)的代码 T E ( b u t c o r r e t ) C o d e \mathrm {TE (but \ corret)\ Code} TE(but corret) Code //#pragma GCC optimize(3) #inc…

bzoj 4770 图样 - 概率与期望 - 动态规划

题目传送门 传送门I 传送门II 题目大意 有一个$n$个点的完全图&#xff0c;每个点的权值是$[0, 2^{m})$中的随机整数&#xff0c;两点间的边的权值是两点点权的异或和&#xff0c;问它的最小异或生成树的边权和的期望。 考虑求最大异或生成树的分治做法&#xff0c;每次按最高位…

BZOJ4770 图样(概率期望+动态规划)

考虑求出所有MST的权值和再除以方案数&#xff0c;方案数显然是2mn。 按位考虑&#xff0c;显然应该让MST里的边高位尽量为0。那么根据最高位是0还是1将点集划分成两部分&#xff0c;整张图的MST就是由两部分各自的MST之间连一条最小边得到的。两部分的MST权值和可以dp得到&…

P4770-[NOI2018]你的名字【SAM,线段树合并】

正题 题目链接:https://www.luogu.com.cn/problem/P4770 题目大意 给出一个长度为 n n n的字符串 S S S。 q q q次询问给出一个串 T T T和一个区间 [ L , R ] [L,R] [L,R]&#xff0c;求 T T T有多少个本质不同的子串不是 S L ∼ R S_{L\sim R} SL∼R​的子串。 1 ≤ n ≤ 5 …

corei7 64 poky linux,Core i7-4770K Linux之旅:有喜有忧

Core i7-4770K Linux之旅&#xff1a;有喜有忧 出处&#xff1a;快科技 2013-06-09 11:37:15 作者&#xff1a;上方文Q 编辑&#xff1a;上方文Q[爆料] 收藏文章 Haswell的评测多如牛毛&#xff0c;但都是在Windows下进行的&#xff0c;Linux用户肯定看不下去了。Phoronix又…