当前位置: 首页 > news >正文

251104A. 图

251104A. 图

给定一个 \(n\) 个点的完全无向图,求给每条边定权在 \([1,V]\) 内的方案数,使得点 \(1\) 到点 \(n\) 的最短路长度等于 \(k\)。对非质数取模。

\[1\le n, k\le 13, 1\le V\le 10^9 \]


考虑按 \(1\)\(x\) 的最短路长度 \(d_x\) 对原图分层,第 \(i\) 层包含所有 \(d_i=i\) 的点。

特别的,第 \(k+1\) 层包含所有 \(d_i > k\) 的点。

对于第 \(i\le k\) 层,设其包含 \(s_i\) 个点。

  • 层内两两边无限制,贡献 \(V^{\binom {s_i}2}\) 种方案。
  • 枚举 \(j<i\),第 \(j\) 层到第 \(i\) 层每对点间边权满足 \(j+w \ge i\)。(否则 \(d_x\) 可以更小)
  • 对于第 \(i\) 层内每个点,至少有一个第 \(j<i\) 层上的点使上述不等式取等。(否则 \(d_x\) 可以更小)

可以直接容斥计算。

具体来说,假如其之前共有 \(k\) 个点,第 \(i\) 个点需求边权 \(w_i \ge v_i\)。那么答案就是

\[\left(\prod_{i}(V-v_i+1)\right)-\left(\prod_i(V-v_i)\right) \]

也即任意的方案减去没有取等的方案。

直接暴力枚举 \(d_x\),方案数约为 \(\binom {n+k} k\),可以接受。

由于枚举过程中钦定了顺序,可能要计算一下重排的方案数。


code
#include <algorithm>
#include <iostream>typedef long long i64;const int N = 15;
i64 n, k, V, MOD;int d[N], cnt[N];
i64 ans = 0, binom = 1;void dfs(int p, i64 plan, i64 binom) {binom *= (n - p + 1);binom /= ++cnt[d[p]];if(d[p] <= k) {i64 eq = 1, gr = 1;for(int i = 1; i < p; ++i) {if(d[i]	== d[p]) {plan = plan * V %MOD;} else {int diff = d[p] - d[i];if(V - diff + 1 <= 0) eq = 0;else eq = eq * (V - diff + 1) %MOD;if(V - diff <= 0) gr = 0; else gr = gr * (V - diff) %MOD;}}plan = plan * (eq - gr +MOD) %MOD;} else {for(int i = 1; i < p; ++i) {if(d[i] == d[p]) {plan = plan * V %MOD;} else {int diff = k - d[i];if(V - diff <= 0) plan = 0;else plan = plan * (V - diff) %MOD;}}}if(p == n) {binom = binom * cnt[k] / (n - 1);ans = (ans + plan * (binom %MOD)) %MOD;} else {int upd = d[p] >= k ? k + 1 : k;int dwn = p == n - 1 ? std::max(d[p], (int)k) : d[p];for(int i = dwn; i <= upd; ++i) {d[p + 1] = i, dfs(p + 1, plan, binom);}}--cnt[d[p]];
}int main() {freopen("graph.in", "r", stdin);freopen("graph.out", "w", stdout);std::cin >> n >> k >> V >> MOD;d[1] = 0;for(int i = 1; i <= k; ++i) {d[2] = i; dfs(2, 1, 1);}std::cout << ans << "\n";
}
http://www.fuzeviewer.com/news/15752/

相关文章:

  • 做视频网站用什么模板程序开源网站
  • 网站备案用户注销备案申请表app推广员怎么做
  • 网站管理后台登录地址wordpress书库插件
  • 淘宝券搜索网站怎么做上传文档的网站
  • 网站建设中单页面如何做京东优惠券网站
  • 苏州相城做网站的手绘动画制作软件
  • 江苏南京建设局官方网站网站域名申请怎么做
  • 做网站源码做网站的公司主要做shm
  • 厦门网站开发建设深圳域名服务器地址
  • 网站推广方案策划书建设部网站王尚春
  • 关于怎么做网站怎么做国内网站
  • 福建建设工程有限公司网站百度口碑网
  • 厦门网站建设a南京网站设计机构
  • 俄语网站叫什么yandex河北建设厅网站登录密码错误
  • 成都企业网站seo建设工程质量 协会网站
  • 直播带货话术不会写?这个AI指令帮你搞定
  • 在阿里巴巴上怎样做网站wordpress编辑插件
  • 桂林旅游网站制作公司怎么创立一个自己的品牌
  • 内部券网站怎么做南昌网站制作方案定制
  • 网站视差怎么做新手建站论坛
  • 如何查看网站的空间商企业宣传页模板
  • 移动通信基站
  • 做奖杯的企业网站河北省网站备案步骤
  • 大型网站开发管发网站内链调整
  • fr后缀网站我在某网站网站做代理
  • 萝岗公司网站建设卡盟做网站
  • 郑州app开发网站建设秦皇岛网站制作费用
  • 怎么在网站上做旅游推广知乎网站建设
  • 没有网站怎样做外贸蜂网站开发
  • 为什么我做的视频网站播放不了公关公司职位