题目

Input
一行两个正整数,分别表示n和m。

Output
一行一个正整数表示答案。

Sample Input
样例1:
2 2
样例2:
10 3

Sample Output
样例1:
129140165
样例2:
7008635

Data Constraint
对于30%的数据n*m<=16
对于另外20%的数据m<=4
对于100%的数据n<=50,m<=8

思路

考虑知道点权怎么求

建出trie,对于trie的每个节点,如果它既有0儿子,又有1儿子,那么这两棵子树分别联通后,要找一条最小的边把它们连起来。

于是我们可以枚举这个节点的深度,再枚举它的左子树和右子树的大小,问题转换为:

有x和y个k位二进制数,求它们之间的异或最小值。

设f[x][y][z][u]为有x和y个k位二进制数,最小值≥u的方案数。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int mod = 258280327;ll power(ll x,ll y) {ll s = 1;for(; y; y /= 2,x = x * x % mod)if(y & 1) s = s * x % mod;return s;
}const int N = 55;const int M = 260;int n,m;ll c[M][M];ll f[N][N][9][M];int a2[9];ll b[N];void build(int n) {for(int i=0; i<=n; i++) {c[i][0] = 1;for(int j=1; j<=i; j++) c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;}
}int main()
{build(256);a2[0]=1; for(int i=1; i<=8; i++) a2[i]=a2[i-1]*2;scanf("%d %d",&n,&m);for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) for(int k=0; k<=m; k++) if(!i||!j||!k){ll s = 1;for(int u=1; u<=i+j; u++) s=s*a2[k]%mod;for(int u=0; u<a2[k]; u++) f[i][j][k][u]=s;}for(int i=1; i<=n; i++) for(int j=1; j<=n-i; j++) for(int k=1; k<=m; k++) {for(int I=0; I<=i; I++) for(int J=0; J<=j; J++){int t=a2[k-1];if((I&&J)||((i-I)&&(j-J))) t=0;ll xs=c[i][I]*c[j][J]%mod;for(int u=0; u<a2[k-1]; u++){if(t==0) f[i][j][k][u + t] = (f[i][j][k][u + t] + f[I][J][k - 1][u] * f[i - I][j - J][k - 1][u] % mod * xs) % mod;else f[i][j][k][u + t] = (f[i][j][k][u + t] + f[I][j - J][k - 1][u] * f[i - I][J][k - 1][u] % mod * xs) % mod;}}ll s = f[i][j][k][a2[k - 1]];for(int u=0; u<a2[k-1]; u++) f[i][j][k][u]=(f[i][j][k][u]+s)%mod;}ll ans = 0;for(int i=1; i<=m; i++) {b[0] = 1;b[1] = a2[m] - a2[i];for(int j=2; j<=n; j++) b[j] = b[j - 1] * b[1] % mod;for(int j=1; j<=n; j++) for(int k=1; k<=n-j; k++){ll xs = c[n][j] * c[n - j][k] % mod * a2[m - i] % mod * b[n - j - k] % mod;ll xs2 = 1;for(int u=1; u<=j+k; u++) xs2 = xs2 * a2[i - 1] % mod;ans = (ans + xs * a2[i - 1] % mod * xs2) % mod;ll s = 0;for(int u=1; u<a2[i-1]; u++) s = (s + f[j][k][i - 1][u]) % mod;ans = (ans + xs * s) % mod;}}ll v = power(a2[m],n);printf("%lld\n",ans * power(v,mod - 2) % mod);
}

【清华夏令营2016模拟5.31】图样相关推荐

  1. 【清华夏令营2016模拟5.31】图森破

    题目 Description 小火车励志成为一名辣鸡出题人,但是要成为一名辣鸡出题人,代码必须跑得比谁都快,这样就能把他们都卡常数了!为了锻炼自己,他找到了一位长者--罗长者,罗长者说:"你 ...

  2. UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]

    #274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...

  3. [清华集训2016]石家庄的工人阶级队伍比较坚强——三进制FWT

    题目链接: [清华集训2016]石家庄的工人阶级队伍比较坚强 题目大意:有$n=3^m$个人玩石头剪刀布,共$t$轮游戏,每轮每个人要和包括自己的所有人各进行$m$次石头剪刀布.每个人在$m$轮中的决 ...

  4. 【清华集训2016】数据交互

    [清华集训2016]数据交互 比较神的\(DDP\). 首先对于给出的一条链我们分两部分统计:\(lca\)以及其他部分. 我们设两个变量\(w_i,g_i\).一条路径的权值就是路径上所有点的\(w ...

  5. P6669 [清华集训2016] 组合数问题

    P6669 [清华集训2016] 组合数问题 题意: 给你n,m,k,问有多少对(i,j)满足K∣CijK|C_{i}^{j}K∣Cij​ (Cij是k的倍数C_{i}^{j}是k的倍数Cij​是k的 ...

  6. [清华集训2016]你的生命已如风中残烛——组合数学

    题目链接: [清华集训2016]你的生命已如风中残烛 题目大意:共有$m+1$张牌,其中有$n$张特殊牌,每张特殊牌有一个权值$w_{i}$表示取到这张牌能获得$w_{i}$次再抽牌的机会,保证$\s ...

  7. 2016年第31届宁波市信息学竞赛复赛试题 D 射击

    题目本体 题目描述 不难发现,豆豆能从很多事情中去思考数学,于是豆豆父母决定让他去练习射击,这是项需要集中注意力的运动,相信能够让豆豆暂时脱离数学.学习射击的第一天就让豆豆产生了浓厚的兴趣,射击的靶子 ...

  8. JZOJ 5483. 【清华集训2017模拟11.26】简单路径

    Description 给定一棵带边权的树,选择两条没有公共边的简单路径(长度可以为0),使得所有在任意一条路径上的边的异或和尽量大. Input 第一行一个数n表示点数,点的编号是0到n-1. 接下 ...

  9. 厦门大学2016年c语言程序设计,厦门大学c语言程序设计2016模拟题讲评及课程复习.pptx...

    <C语言程序设计>课程复习及模拟题讲评;<C语言程序设计>试卷各类题目分数分布情况 一.选择题 40分(20小题, 每题2分 ) 主要考核基本概念, 词法, 语法和小程序阅读等 ...

最新文章

  1. spring与memcache的集成
  2. Nginx在mvvm模式中的使用
  3. call_once/once_flag
  4. go语言和java比_去过大场面试后,java程序员有没有必要转学Go语言?
  5. 进入正在运行状态中的Docker容器
  6. ubuntu16.04安装evo
  7. linux中resize的含义,linux的resize2fs命令
  8. 【Modern OpenGL】纹理 Textures
  9. Object类的用法(二)
  10. mooc上c语言怎么改作业,C语言的编写、运行和修复代码
  11. pytroch预训练网络ResNet
  12. 解雇IE补丁操作方法
  13. Java字节码增强探秘
  14. 随机过程之更新理论的应用
  15. 盘点wps函数公式大全
  16. 如何打印复印试卷,试卷打印复印去哪里方便
  17. 论文阅读:A Survey on Deep Hashing Methods 综述:深度哈希方法
  18. Outline for Mac(Mac记事本软件)
  19. APP如何在应用商店获取较高的排名?
  20. 智能车图像处理逆透视教程

热门文章

  1. ROS 入门教程 —— 小海龟简单控制
  2. Riiid Answer Correctness Prediction - lgb baseline 学习
  3. 对 three.js webgl_clipping_stencil 例子的理解
  4. flutter中的过场动画 PageTransitionsTheme
  5. 第六章 Linux 文件与目录配置
  6. 【论文阅读】AVP-SLAM Semantic Visual Mapping and Localization for Autonomous Vehicles in the Parking Lot
  7. 华为ENSP——WLAN射频调优
  8. 性能度量 - 对学习器泛化能力的评估
  9. 【组织架构】中国铁路西安局集团有限公司
  10. 一些鲜为人知的但却很有趣的Unix/Linux命令