【记录】AT_abc406模拟赛
我感觉自己糖的没边了https://www.luogu.com.cn/problem/AT_abc406_c因为恰好一个所以要找的是类似波形函数的一段。更确切地说是前一段递增的最后一个和后一段递增的第一个。所以只要求出所有递增段枚举起始结尾即可。https://www.luogu.com.cn/problem/AT_abc406_d给了 2e5还给了 2.5s。肯定是 nlog 级别。按行列分类开两个 set放编号删的时候两个一起删。https://www.luogu.com.cn/problem/AT_abc406_e#includebits/stdc.h using namespace std; typedef unsigned long long ULL; const ULL P 998244353; // 模数 const int N 65; // 最大位数ULL 通常为 64 位这里开大一点防止越界 ULL C[N][N], S[N][N]; // C[i][j]: 组合数 C(i, j); S[i][j]: 长度为 i 的二进制数中恰有 j 个 1 的所有数的和 // 计算 x 的二进制中 1 的个数 (popcount) int getbit(ULL x) { int sum 0; // 从高位向低位扫描其实直接用 __builtin_popcountll(x) 更快但手写更通用 for (int i 59; i 0; i --) if (x (1ull i)) { sum ; } return sum; } // 核心计算函数计算 1 到 n 中 popcount 为 K 的数的和 ULL calc(ULL n, int K) { ULL ans 0; // 从高位到低位枚举每一位 i for (int i 59; i 0; i --) { // 如果 n 的第 i 位是 0则不能在这一位填 0 来构造“小于 n”的数因为前缀必须和 n 一样这一位填 0 会导致前缀变小但 n 这里是 0填 0 就等于前缀一样了逻辑上这一位只能填 0无法产生分支 // 只有当 n 的第 i 位是 1 时我们才可以尝试在这一位填 0从而让后面的位任意取构造出小于 n 的数 if ((n (1ull i)) 0) { continue; } // 计算 n 在高于 i 位的部分即 i1 到最高位已经有多少个 1 // n (i 1) 移除了低 i1 位保留了高位前缀 int t K - getbit(n (i 1)); // 如果还需要填的 1 的个数 t 0说明高位前缀的 1 已经超过 K 了再往后枚举高位前缀只会更长1 更多所以直接 break if (t 0) { break; } // 如果 t i说明剩下的位数不够填 t 个 1这种情况方案数为 0C[i][t] 和 S[i][t] 自然也是 0如果初始化正确可以直接加也可以特判跳过 // 这里的逻辑是 // 1. S[i][t]: 低 i 位中填 t 个 1 的所有数的总和 // 2. C[i][t]: 低 i 位中填 t 个 1 的方案数 // 3. (n (i 1) (i 1)): 提取 n 的高位前缀值将低 i1 位清零 // 公式ans (低位总和) (高位前缀值 * 方案数) // 注意这里当前位 i 填的是 0所以高位前缀就是 n 的高位部分 ULL prefix_val (n (i 1)) (i 1); // 高位部分的值 // 防止 prefix_val 过大先取模。虽然 prefix_val 可能超过 ULL 范围吗不会n 是 ULL但取模是为了后续乘法不溢出 // 实际上 prefix_val % P 是安全的 ULL term1 S[i][t]; // 低位贡献 ULL term2 (C[i][t] * (prefix_val % P)) % P; // 高位贡献 ans (ans term1 term2) % P; } // 最后检查 n 本身是否满足条件如果满足则加上 n return (ans n * (getbit(n) K)) % P; } int main () { ios::sync_with_stdio(false); cin.tie(0); // 预处理组合数 C[i][j] C[i-1][j-1] C[i-1][j] memset(C, 0, sizeof(C)); C[0][0] 1; for (int i 1; i N - 5; i ) { C[i][0] 1; for (int j 1; j i; j ) { C[i][j] (C[i - 1][j - 1] C[i - 1][j]) % P; } } // 预处理 S[i][j]: 长度为 i 的二进制数中恰好有 j 个 1 的所有数的数值之和 // 递推关系推导 // 考虑长度为 i 的数最高位第 i-1 位可以是 0 或 1 // 1. 最高位填 0: 剩下的 i-1 位中选 j 个 1。贡献为 S[i-1][j] // 2. 最高位填 1: 剩下的 i-1 位中选 j-1 个 1。 // 此时最高位贡献了 2^(i-1)。这样的数共有 C[i-1][j-1] 个。 // 最高位的总贡献 2^(i-1) * C[i-1][j-1] // 低位的总贡献 S[i-1][j-1] // 综上: S[i][j] S[i-1][j] S[i-1][j-1] 2^(i-1) * C[i-1][j-1] memset(S, 0, sizeof(S)); for (int i 1; i N - 5; i ) { for (int j 1; j i; j ) { // 第一部分最高位填 1 带来的低位和 最高位本身的值 * 方案数 ULL high_bit_val (1ull (i - 1)) % P; ULL count C[i - 1][j - 1]; S[i][j] (S[i - 1][j - 1] high_bit_val * count % P) % P; // 第二部分最高位填 0 的情况 S[i][j] (S[i][j] S[i - 1][j]) % P; } } int T; cin T; while (T --) { ULL n; int K; cin n K; cout calc(n, K) \n; } return 0; }https://www.luogu.com.cn/problem/AT_abc406_f树转序列。#includebits/stdc.h using namespace std; typedef long long LL; const int N 3e5 10; struct node { int x, y; } a[N]; vectorint G[N]; int dfn[N], tsp, dep[N], siz[N]; void dfs(int x, int fa) { tsp ; dfn[x] tsp; dep[x] dep[fa] 1; siz[x] 1; for (int y : G[x]) if (y ! fa) { dfs(y, x); siz[x] siz[y]; } } LL c[N]; int n; void add(int x, LL d) { if (x 0 || x n) { return ; } for (int i x; i n; i (i -i)) { c[i] d; } } LL getsum(int x) { if (x 0) { return 0; } if (x n) { x n; } LL sum 0; for (int i x; i 1; i - (i -i)) { sum c[i]; } return sum; } int main () { ios::sync_with_stdio(false); cin.tie(0); cin n; for (int i 1; i n; i ) { cin a[i].x a[i].y; G[a[i].x].push_back(a[i].y); G[a[i].y].push_back(a[i].x); } tsp 0; dep[0] 0; memset(siz, 0, sizeof(siz)); dfs(1, 0); int q; cin q; memset(c, 0, sizeof(c)); LL sum n; for (int i 1; i n; i ) { add(i, 1); } for (int i 1; i q; i ) { int opt; cin opt; if (opt 1) { int x; LL w; cin x w; add(dfn[x], w); sum w; } else { int u; cin u; int x a[u].x, y a[u].y; if (dep[y] dep[x]) { swap(x, y); } LL t getsum(dfn[y] siz[y] - 1) - getsum(dfn[y] - 1); cout abs(t - (sum - t)) \n; } } return 0; }

相关新闻

ADC的基本转换原理

ADC的基本转换原理

ADC的基本转换原理 ADC参考电压和调理电路

2026/7/5 15:32:12 阅读更多 →
AI教材编写新利器!低查重率保障,高效产出优质教材!

AI教材编写新利器!低查重率保障,高效产出优质教材!

在教材的编写过程中,原创性和合规性的平衡是一个非常重要的问题。很多时候,创作者在借鉴优质教材时会担心自己的查重率过高;而在尝试自行创建知识点时,又可能面临逻辑不够严密或内容不准确的风险。更令人担忧的是,在引…

2026/5/17 6:29:43 阅读更多 →
主导大型互联网公司AI大模型落地三年,我总结了这套AI大模型

主导大型互联网公司AI大模型落地三年,我总结了这套AI大模型

大家看到“AI大模型”这几个字会不会是这种感觉——要么觉得这是神仙打架的领域,要么觉得这是秃头程序员才能碰的东西。你脑子里可能已经浮现出这样的画面:凌晨三点,一个戴着厚眼镜的程序员对着满屏的数学公式疯狂敲键盘,旁边泡面…

2026/5/17 6:29:42 阅读更多 →

最新新闻

如何简单快速下载全网视频音频资源:完整res-downloader终极指南

如何简单快速下载全网视频音频资源:完整res-downloader终极指南

如何简单快速下载全网视频音频资源:完整res-downloader终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你…

2026/7/6 21:58:41 阅读更多 →
EDU漏洞挖掘入门:从合规实战到技术精进的完整指南

EDU漏洞挖掘入门:从合规实战到技术精进的完整指南

1. 从零开始:理解EDU漏洞挖掘的独特价值与合规边界 如果你对网络安全感兴趣,尤其是看到“漏洞挖掘”这个词时感到兴奋,但又觉得它高深莫测,那么从“EDU”(教育行业)这个领域切入,可能是最平滑、…

2026/7/6 21:58:41 阅读更多 →
Excel NOW()函数真相:不是实时钟表,而是可控快照

Excel NOW()函数真相:不是实时钟表,而是可控快照

1. 项目概述:Excel NOW()函数不是“实时钟表”,而是“快照快门”在Excel里敲下NOW(),时间秒级跳动的视觉效果确实让人误以为它是个活的时钟。但干了十多年数据处理、报表开发和财务建模的老手都清楚:NOW()根本不是动态计时器&…

2026/7/6 21:58:41 阅读更多 →
飞腾麒麟信安系统XDMCP漏洞修复与国产化平台安全加固实战

飞腾麒麟信安系统XDMCP漏洞修复与国产化平台安全加固实战

1. 项目概述:一次典型的国产化平台安全加固实战 最近在负责一个基于飞腾CPU和麒麟信安操作系统的国产化项目,在安全扫描阶段,系统提示了一个关于XDMCP服务的漏洞风险。这个发现其实挺典型的,在国产化替代的初期,很多预…

2026/7/6 21:58:41 阅读更多 →
HugeCTR 3.9 源码剖析:GPU 参数服务器如何实现 3 级流水线数据读取

HugeCTR 3.9 源码剖析:GPU 参数服务器如何实现 3 级流水线数据读取

HugeCTR 3.9 三级流水线数据读取机制深度解析1. 高性能推荐训练框架的数据读取挑战在GPU加速的推荐系统训练中,数据读取往往是制约整体性能的关键瓶颈。传统训练框架通常面临三个核心问题:I/O延迟:从存储介质加载海量稀疏特征数据需要消耗大量…

2026/7/6 21:56:39 阅读更多 →
LTC6904与PIC18F4620构建高精度可编程方波发生器

LTC6904与PIC18F4620构建高精度可编程方波发生器

1. 项目背景与核心器件选型在嵌入式系统开发中,精确的时钟信号生成是许多应用的基础需求。LTC6904作为一款低功耗、高精度的可编程振荡器,与PIC18F4620微控制器的组合,能够构建一个灵活可靠的方波脉冲发生器系统。这个方案特别适合需要精确时…

2026/7/6 21:54:38 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻