Say 赛选记(11.27)

news/2025/12/7 15:25:52/文章来源:https://www.cnblogs.com/Hengqwq/p/19283152

noip 前的最后一篇了(悲

AT_arc171_d [ARC171D] Rolling Hash

众所周知,\([l,r]\) 的哈希值是可以用前缀相减来算的,也就是 \(s_r - s_{l - 1} \times B^{r - l + 1}\),但这个形式在这道题中就力不从心了。
换一个形式,实际上 \([l, r]\) 的哈希值也是可以用后缀相减来完成的,也就是 \((s_l - s_{r + 1}) \times B^{r - n}\) 这个形式就很棒了,因为刚好因式分解了,\(B\) 的幂次肯定不为 0,所以如果这东西等于 0 \(s_l \equiv s_{r + 1}\)
然后注意到这个 \(s_i\) 是可以在 \([0, P)\) 中任取的,并且每种 \(s\) 都对应着一个 \(A\),主要是因为有逆元可以解方程什么的,反正归纳一下可得。
然后就变成了一个点独立集问题,\((l, r + 1)\) 不能在同一个点独立集,问最少能划分多少个点独立集。装压即可。

Code
#include <bits/stdc++.h>
using namespace std;
const int N = 17;
bool ch[1 << N], e[N][N];
int f[1 << N];
int p, b, n, m;
int lowbit(int x){ return x & (-x); }
int main(){cin.tie(nullptr)->sync_with_stdio(0);cin >> p >> b >> n >> m;if(p > n){ cout << "Yes\n"; return 0; }++n;for(int i = 1; i <= m; ++i){int x, y;cin >> x >> y;--x; e[x][y] = e[y][x] = 1;}ch[0] = 1;for(int i = 1; i < (1 << n); ++i){int s = i ^ lowbit(i), x = __lg(lowbit(i));if(!ch[s]) continue;ch[i] = 1;for(int j = 0; j < n; ++j){if(s & (1 << j)) ch[i] &= !e[x][j];}} f[0] = 0;for(int i = 1; i < (1 << n); ++i){f[i] = 1e9;for(int j = i; ; j = (j - 1) & i){if(ch[j]){f[i] = min(f[i], f[i ^ j] + 1);}if(!j) break;}}if(f[(1 << n) - 1] <= p) cout << "Yes\n";else cout << "No\n";return 0;
}

AT_arc171_c [ARC171D] Swap On Tree

考虑什么样的操作方案能使 \(a\) 不同。首先如果所选边集不同显然不同。然后赛时只剩四十分钟想了一个究极无敌假的结论,一个边集的方案是所有边连通块大小的阶乘的积。

graph_LI

反例太多了,实际上这样不是菊花都不满足这个结论,给出一个。比方说我们第一次交换 1,3 之后,剩下 3,5,7,6 和 1,4,2 的交换就没有关系了,只用关系他们内部的顺序,显然阶乘多算了很多。
发现实际上只需要每个点相连的那些边的相对顺序不同,那么最后的 \(a\) 就不同。而一条边只可能被两个边相连,所以我们可以合并多个点的边相对顺序。
比方说对 3 而言,交换边的顺序是 1,3,2,4,而对于 1 而言是 6,5,4。那么可以把它们合并成 1,3,2,6,5,4。当然不止这一种,只是怎么合并都是本质相同的,只要能合并即可。
也就是一个方案的贡献是 \(\prod deg\),树形 dp 算这个即可。

Code
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e3 + 5, mod = 998244353;
int h[N], f[N][N], fac[N], siz[N], n, g[N][2];
vector<int> e[N];
void add(int &x, int y){ (x += y) %= mod; }
void dfs(int u, int fa){f[u][0] = 1;int cnt = 0;for(int v : e[u]){if(v != fa){dfs(v, u);++cnt;for(int i = 0; i <= cnt; ++i) h[i] = 0;for(int i = 0; i <= cnt; ++i){add(h[i], f[u][i] * g[v][0] % mod);add(h[i + 1], f[u][i] * g[v][1] % mod);}for(int i = 0; i <= cnt; ++i) f[u][i] = h[i];}}for(int i = 0; i <= e[u].size(); ++i){add(g[u][0], f[u][i] * fac[i] % mod);add(g[u][1], f[u][i] * fac[i + 1] % mod);}
}
signed main(){cin.tie(nullptr)->sync_with_stdio(0);cin >> n;fac[0] = 1;for(int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % mod;for(int i = 1; i < n; ++i){int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs(1, 0);cout << g[1][0];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/991521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET异步编程进阶:从语法糖到高性能架构的核心突破

深入探讨如何智能地结合I/O和CPU工作、避免隐藏的线程池成本,以及使用新的.NET功能使异步比以往更安全、更快速。 .NET异步编程进阶:从语法糖到高性能架构的核心突破 在每个.NET开发者的职业生涯中,都会有一个转折…

AI元人文:价值共生时代的元操作系统——理论架构、深层辩护与演进蓝图

AI元人文:价值共生时代的元操作系统——理论架构、深层辩护与演进蓝图 摘要 本文提出并系统阐释了“AI元人文”理论框架,旨在应对通用人工智能(AGI)时代“价值对齐”的根本困境。该框架实现了从寻求静态、普适价值…

2025深圳、惠州生产线厂家TOP5推荐!广东深圳、惠州地区装配线/老化线/组装线/装配线等优质供应商专业评测,智能智造+整厂方案权威榜单发布,技术赋能重构工业生产生态

随着工业自动化技术的飞速发展,生产线设备作为制造业升级的核心基础设施,市场需求持续攀升。本榜单基于技术实力、行业适配性、服务覆盖度三大维度(振熙自动化新增“整厂规划”维度),结合行业协会数据与企业实地调…

[开源代码]基于STM32的环境检测与报警系统

[开源代码]基于STM32的环境检测与报警系统 前言 随着物联网和智能硬件的发展,环境检测在工业、农业以及家庭自动化中变得越来越重要。传统的环境监测多依赖单一传感器,无法实现多参数同时监控,也难以针对不同参数设…

120_尚硅谷_函数注意事项和细节(3)

120_尚硅谷_函数注意事项和细节(3)1.函数注意事项和细节讨论 2.使用 _ 标识符,忽略返回值 3.Go支持可变参数

数据采集与融合技术作业四_102302107_林诗樾

作业①: 要求: 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 候选网站:…

深入解析:了解一个开源日志平台——Elastic Stack

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

低代码平台的强扩展性设计:支撑企业长期业务增长的技巧路径与实践

低代码平台的强扩展性设计:支撑企业长期业务增长的技巧路径与实践2025-12-07 15:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !i…

第二届机器学习暑期学校在印度启动

某中心在印度启动了第二届机器学习暑期学校,这是一个面向工程专业本科及研究生的扩展项目。课程涵盖深度神经网络、监督学习等核心ML主题,并通过虚拟模块与实时问答,为学生提供应用科学技能培训。2021年,某中心在印…

C语言,用json文件存储tree

C语言,用json文件存储tree: 1.读取和保存都用递归算法遍历,可以保存任意树结构,相比用INI文件,一致性更好,当然用数据库功能更多更好2.json数据全部用节点最方便,缺点存储的json文件末端有一个空的{},不太美观…

数通核心专业书

核心专业书 IA阶段:hcia学习指南 /实验指南 ccna学习指南 /ccna笔记IP阶段:hcnp学习指南/hcip实验指南 ccnp笔记 TCP/IP路由协议卷一/卷二 ospf-isis详解 Wireshark网络分析就这么简单IE阶段: 专题形式:ccie笔记IP…

【C++】哈希表:简单易懂的核心讲解(含实战用法)

哈希表(Hash Table)是 C++ 中高效的键值对(key-value)存储结构,核心优势是 插入、查找、删除操作的平均时间复杂度接近 O (1)—— 比数组查找(O (n))、有序容器(如 map,O (log n))快得多,日常开发中常用来解…

PFLS

作者介绍: 来自PFLS。现在7年5班。

Dify 自建部署完全指南:从上手到放弃到真香

本文记录了一个开发者在企业内部部署Dify AI平台的两周血泪史。从老板突然要求搭建私有化AI平台开始,评估了Coze、FastGPT等方案后选择了Dify,部署过程充满挑战……故事的开始:就想要个听话的 AI 应用平台 几个月前…

工业设计必备工具:3ds Max 2025 三维建模 影视特效 下载安装教程

Autodesk 3ds Max 是一款专业的三维建模、动画和渲染软件,广泛应用于游戏开发、影视特效、建筑可视化和产品设计等领域,它凭借功能强大、操作灵活且兼容性强的特点,成为游戏开发、影视制作、建筑设计等多个领域的主…

组合计数题没做

确实没做。确实没做。

城市内涝监测架构-恒星物联解决方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

院长码上办-患者投诉接办管理系统

院长码上办-患者投诉接办管理系统 www.yzmsb.com

2025上海黛丽汀立体停车设备厂家实力榜:智能垂直升降技术领跑,六家高潜力本土品牌深度解析

2025上海黛丽汀立体停车设备厂家实力榜:智能垂直升降技术领跑,六家高潜力本土品牌深度解析 随着中国城市化进程的不断深化,“停车难”已成为制约城市发展、影响居民生活质量的核心痛点之一。在这一背景下,立体停车…