尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2023 ICPC Hefei

2023 ICPC Hefei
📅 发布时间:2026/6/19 7:50:05

2023 ICPC Hefei

J

对于一条路径,维护最大的边权是容易的,但是要求路径上最大和次大的和。于是我们就枚举一条边来作为路径上的最大边权,然后取这条边的两个端点到原点和终点的路径上的最大边权为次大值就好了。只需要从原点和终点分别跑一遍 dijkstra 求出到每个点的最短距离,这里的一条路径的长度定义为这条路径上最大的边权。

int n, m;
std::array<int, 3> e[M + 5];
std::vector<std::pair<int, int>> adj[N + 5];
int dis1[N + 5], disn[N + 5];
bool vis[N + 5];void dij(int S, int *dis) {std::priority_queue<std::pair<int, int>> q;for (int i = 1; i <= n; ++i) {vis[i] = false;}dis[S] = 0;q.push({ 0, S });while (not q.empty()) {auto [d, cur] = q.top();q.pop();if (vis[cur]) {continue;}vis[cur] = true;d = -d;for (auto &[to, w] : adj[cur]) {if (dis[to] > std::max(d, w)) {dis[to] = std::max(d, w);q.push({ -dis[to], to });}}}return;
}void solve() {std::cin >> n >> m;for (int i = 0; i < m; ++i) {int u = 0, v = 0, w = 0;std::cin >> u >> v >> w;e[i] = { u, v, w };adj[u].push_back({ v, w });adj[v].push_back({ u, w });}for (int i = 1; i <= n; ++i) {dis1[i] = disn[i] = Inf;}dij(1, dis1);dij(n, disn);int ans = Inf;// 枚举路径上的最长边for (int i = 0; i < m; ++i) {auto &[u, v, w] = e[i];int w1 = std::max(dis1[u], disn[v]);int w2 = std::max(dis1[v], disn[u]);// 找次长边int mn = std::min(w1, w2);if (w >= mn) {ans = std::min(ans, w + mn);}}std::cout << ans << '\n';
}

C

我是字符串苦手,竟然是回文自动机板子题吗。

回文自动机的每个节点就是一个本质不同的回文子串,每个节点可以记录下对应串的长度信息和数量信息。对于一个特定回文串的数量,需要建立一颗 fail 树,一个节点对应的串的数量就是以这个节点为根的子树里所有节点记录的数量和。

B

首先要观察出合法的子串满足最长递减子序列的长度小于等于 2。这个东西和可以直接 dp 的。从大到小枚举每个数,假设已经放好了比 \(k\) 大的所有数,现在要考虑 \(k\) 的位置,首先把 \(k\) 全部放到第一个数的前面是可以的,因为现在的 \(k\) 是不大于枚举到的所有数的,放到最前面一定不会使最长递减子序列的长度增加,但是如果放在第一个数后面就有可能,于是我们需要知道当前序列中,第一个使得最长递减子序列的长度是 2 的位置,于是所有的 \(k\) 必须都放在这个位置之前,知道了这个后,枚举一下有多少 \(k\) 在第一个数之前 和 在第一个数之后的 \(k\) 的第一个位置在哪里,算一下排列组合就好。为了方便,我们从逆序列考虑,找出最长递增子串长度小于等于2的逆序列的数量,于是我们可以定义 \(f_{i, j}\) 为考虑了前 \(i\) 个数,且第一个使得最长递增子序列的长度为 2 的位置在 \(j\),可以得到以下转移:

\[f_{i + 1, x + k + 1} = f_{i + 1, x + k + 1} + f[i][j] \times C_{(j - k - 1) + (a_{i + 1} - x - 1)}^{a_{i + 1} - x - 1} \]

相关新闻

  • postgresql第一篇:postgresql收到一条sql语句后做了什么
  • Windows 事件ID + 登录类型 + 服务对应表大全
  • 10.16日学习笔记

最新新闻

  • 从零实战Heartbleed漏洞:靶场搭建、手工复现与自动化检测脚本开发
  • 解决DataTables响应式布局中的弹出问题
  • StarCore DSP开发实战:CodeWarrior工具链深度解析与性能优化
  • Streamlit+OpenAI+Comet ML构建可追踪AI对话系统
  • 电瓶车托运破损理赔哪家好?2026最靠谱物流推荐 - 快递物流资讯
  • OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号