首页 > 其他分享 >CF1657E Star MST

CF1657E Star MST

时间:2023-05-09 16:45:01浏览次数:37  
标签:Star CF1657E MST long int kmax 权值 条边 Input

Problem

有一个 \(n\) 个点的无向完全图,边权 $ e∈[1,m]$ ,已知该图的最小生成树的权值与所有与 \(1\) 号点相连的边的边权和相同,求有多少种构图方式,答案对 \(998244353\) 取模。

\(2\leq n \leq 250 , 1 \leq m \leq 250\) 。

Input

一行两个整数 \(n\),\(k\)。

Output

一行一个整数表示答案。

Sample

Input 1

3 2

Output 1

5

Input 2

4 4

Output 2

571

Input 3

6 9

Output 3

310640163

Input 4

42 13

Output 4

136246935

Solution

比较难想的DP题。

考虑定义 \(f_{i,j}\) 表示当前给与 \(1\) 相连的 \(j\) 条边分配了权值,每条边权值在 \([1,i]\) 之间的方案数。

由题意可以得到,对于一条边 \((x, y)\),若 \(x \neq 1\) 且 \(y \neq 1\),则该边的权值 \(W_{x,y} \geq W_{1, x}\) 且 \(W_{x,y} \geq W_{1, y}\)。

\(n,k\) 都很小,可以考虑两层循环枚举状态,一层循环进行转移。

假设我们已知为 \(f_{i - 1,j}\) 的答案,从剩下的 \(n-1-j\) 条边中选出 \(k\) 条边赋值为 \(i\),容易可以得到转移:

\(f_{i,j+k} = f_{i,j+k}+ f_{i-1,j} * c_{n-j-1,k} * Pow(m-i+1,j*k+k*(k-1)/2)\)

其中 \(c_{n-j-1,k}\) 为从 \(n-j-1\) 条边中选出 \(k\) 条边的方案数。(组合数)

加入的这 \(k\) 条边之间连出的 \(k*(k-1)/2\) 条边以及这 \(k\) 条边与前面 \(j\) 条边之间连出的 \(j\times k\) 条边的权值都必须在 \([i,m]\) 之间,每一条边都有 \(m-i+1\) 种选择,还需乘上这部分的贡献。

最后 \(f_{m,n-1}\) 即为答案,权值不超过 \(i\),分配了 \(n-1\) 条边。

代码:

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

const int kmax = 255;
const int Mod = 998244353;

int n, m;
long long c[kmax][kmax];
long long f[kmax][kmax];

long long Pow(long long x, long long y) {
  long long r = 1;
  for (; y; y >>= 1) {
    if (y & 1) r = r * x % Mod;
    x = x * x % Mod;
  }
  return r;
}

void Init() { // 预处理组合数
  c[0][0] = 1;
  for (int i = 1; i < kmax; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % Mod;
    }
  }
}

int main() {
  Init();
  cin >> n >> m;
  f[0][0] = 1;
  for (int i = 1; i <= m; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n - j; k++) {
        f[i][j + k] = (f[i][j + k] + f[i - 1][j] * c[n - j - 1][k] % Mod * Pow(m - i + 1, j * k + k * (k - 1) / 2) % Mod) % Mod; // 直接转移,记得取模
      }
    }
  }
  cout << f[m][n - 1];
  return 0;
}

标签:Star,CF1657E,MST,long,int,kmax,权值,条边,Input
From: https://www.cnblogs.com/ereoth/p/17385200.html

相关文章

  • android.app.BackgroundServiceStartNotAllowedException
    ---------beginningofcrash05-0901:25:24.46521872187EAndroidRuntime:FATALEXCEPTION:main05-0901:25:24.46521872187EAndroidRuntime:Process:com.android.gallery3d,PID:218705-0901:25:24.46521872187EAndroidRuntime:java.lang.Runti......
  • StarCoder: 最先进的代码大模型
    关于BigCodeBigCode是由HuggingFace和ServiceNow共同领导的开放式科学合作项目,该项目致力于开发负责任的代码大模型。StarCoder简介StarCoder和StarCoderBase是针对代码的大语言模型(代码LLM),模型基于GitHub上的许可数据训练而得,训练数据中包括80多种编程语言......
  • Docker CLI docker compose restart常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • MSTest之数据驱动的单元测试
    定义一个类Maths,有一个循环添加两个整数的方法:publicintAddInt(intfirst,intsecond){intsum=first;for(inti=0;i<second;i++){sum+=1;}returnsum;}内联数据驱动测试MSTest使用 DataRow 指定数据驱动测试使用的值......
  • WLC FAST restart
    FastRestartItisrecommendedtouse restart insteadof resetsystem forthefollowingscenariostoreducenetworkandservicedowntimeandprovidebetterserviceability:LAGModeChangeMobilityModeChangeWeb-authenticationcertinstallationClearC......
  • 关于 mybatis-spring-boot-starter 的版本适配问题
    写在前面:本人就读于某不知名二本计科专业,目前大二,正在自学SpringBoot。博客中难免出现谬误,请大家批评指正,不喜勿喷,键盘侠手下留情。开发环境:IDEA2022.3.2JDK1.8SpringBoot2.7.11Maven3.9.0问题描述:最近在写一个SpringBoot项目,整合了Mybatis,在程序运行时出现如下报错......
  • Python wordpress-xmlrpc错误:xml.parsers.expat.ExpatError: XML or text declaration
    解决方法:修改打开client.py文件原代码:deffeed(self,data):self._parser.Parse(data,0)改成如下的代码:deffeed(self,data):self._parser.Parse(data.strip(),0)......
  • NC51112 Stars in Your Window
    题目链接题目题目描述Fleetingtimedoesnotblurmymemoryofyou.Canitreallybe4yearssinceIfirstsawyou?Istillremember,vividly,onthebeautifulZhuhaiCampus,4yearsago,fromthemomentIsawyousmile,asyouwerewalkingoutoftheclassr......
  • Hbase Memstore刷新方式与Region的数目上限
    目录Region数目上限Region大小上限MemStore的刷新方式(触发条件)HLog(WAL)Size&MemstoreFlush频繁的MemstoreFlushesRegion数目上限RegionServer的region数目取决于memstore的内存使用,每个region拥有一组memstore(memstore的数量有hstore决定,hstore的数据由创建表时的指定的列族......
  • Hugging News #0506: StarCoder, DeepFloyd/IF 好多新的重量级模型
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!StarCoder:最新的代码生成LLMBlog:ht......