NOIP模拟四
NOIP模拟四
number
题目描述
现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\)。
定义这些点的一张异或图为:
先选定一个集合 \(S\)。
对于原图上编号为 \(x\) 和编号为 \(y\) 的点,如果 \(x\oplus y\in S\),那么在 \(x\) 和 \(y\) 之间连一条无向边。
数出有多少个集合 \(S\),满足它的大小尽量小且异或图为连通图。答案对 \(998244353\) 取模。
输入格式
请从
number.in中读入数据。输入一行一个数 \(n\)。
输出格式
请将答案输出到
number.out中。输出一行,表示答案。
样例
Input 1
1
Output 1
1
Input 2
2
Output 2
3
Input 3
3
Output 3
28
Input 4
189
Output 4
952004352
Input 5
999876
Output 5
936053454
数据范围
【数据范围】
对于所有数据,保证:\(n\le 10^6\)。
测试点编号 \(n \le\) \(1\sim 3\) \(5\) \(4 \sim 6\) \(200\) \(7 \sim 10\) \(10^{6}\) 样例解释
对于第二个样例,集合 \(S\) 的大小最小是 \(2\),\(\{1,2\}\),\(\{1,3\}\),\(\{2,3\}\) 均满足条件。
转换问题:对于一个 \(x\),如果有一个 \(a\in S\),那么 \(x\) 就向 \(x\oplus a\) 连边。
我们发现,集合 \(S\) 中每个数线性无关(即不存在某个数是其余若干个数的异或和)。
证明:如果有一个 \(a\in S\),那么 \(x\) 就向 \(x\oplus a\) 连边。
那么假如又有一个 \(b\in S\),则 \(x\) 会向 \(x\oplus a\) 连边,\(x\oplus a\) 会向 \(x\oplus a\oplus b\) 连边。
这时如果有 \(a\oplus b\in S\),则 \(x\) 会向 \(x\oplus a\oplus b\) 连边,我们会发现这不是必须的,因为此时通过 \(a\) 和 \(b\) 已经让它们连边了,就不需要再有一个 \(a\oplus b\in S\) 了。 可以把 \(a\oplus b\) 删掉。
也就是说,如果一个集合 \(S\) 如果其中某个数是其余若干个数的异或和,则这个集合不是最短的,因为可以把这个数删掉。
我们又发现,集合 \(S\) 最短长度为 \(n\)。
证明:因为集合 \(S\) 中每个数线性无关,所以任选任意个数异或和都不一样,共有 \(2^n\) 种选法,去掉不选即可以组成 \(2^n-1\) 种数。
若对于任意的 \(a\in S\),有 \(a<2^n\),那么集合任选任意个数异或和都小于 \(2^n\),和上面一结合,得出集合 \(S\) 任选任意个数异或和可以组成 \(1\sim2^n-1\) 的数。
也就是以编号为 \(0\) 的节点出发,可以通过 \(S\) 的任意组合链接到 \(1\sim2^n-1\) 的节点。
可以反证当 \(S\) 长度为 \(n-1\) 时无解。
那么我们可以做一个 dp 来求这个方案数。设 \(f_i\) 为决定了集合 \(S\) 前 \(i-1\) 个数,要求第 \(i\) 个数的方案数。第 \(i\) 位可以选 \(2^n\) 种数,因为前面 \(i-1\) 位选过了的若干个异或和不能选,所以去掉 \(2^{i-1}\) 种方案。转移方程为:
\]
因为集合 \(S\) 无序,所以最后要除以 \(n!\)。
/**
* @file number.cpp
* @tag: #数学
* @author: ZnPdCo
* @date: 2023-12-28 12:54:00
* @problem: https://www.xinyoudui.com/contest?courses=685&books=676&pages=19971&fragments=63901&problemId=19061
**/
#include <cstdio>
#define ll long long
#define N 1000010
#define P 998244353
ll n;
ll ans = 1;
ll qpow(ll x, ll y) {
if(y == 0) return 1;
if(y % 2 == 1) return x * qpow(x, y-1) % P;
ll tmp = qpow(x, y/2);
return tmp * tmp % P;
}
ll npow, xpow = 1, nfact = 1;
int main() {
freopen("number.in", "r", stdin);
freopen("number.out", "w", stdout);
scanf("%lld", &n);
npow = qpow(2, n);
for(ll i = 1; i <= n; i++) {
(ans *= ((npow - xpow)%P+P)%P) %= P;
(xpow *= 2) %= P;
(nfact *= i) %= P;
}
(ans *= qpow(nfact, P-2)) %= P;
printf("%lld", ans);
}
NOIP模拟四的更多相关文章
- NOIP 模拟四 考试总结
#T1随 又是liu_................... 数列n,m个操作,每次随机取a[i],x=x*a[i]%k; 问题是求x期望%mod; 首先考虑到期望转移过程中存在%k,一般套路线性期望 ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
- 2017-9-22 NOIP模拟赛[xxy][数论]
XXY 的 的 NOIP 模拟赛 4 4 —— 数学专场 A Description定义 f(x)表示 x 的约数和,例:f(12)=1+2+3+4+6+12=28给出 x,y,求Σf(i),i∈[x ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- NOIp模拟赛二十八
(这是NOIp模拟赛?应该是NOI模拟赛不小心加了个p) 嗯,假装这是正经的NOIp模拟赛,从今天开始也写写题解吧(这几天被虐的惨惨) 今日情况:8+50+0=58 A题输出样例,B题正解写挂,C题不 ...
- 2019.6.20 校内测试 NOIP模拟 Day 1 分析+题解
这次是zay神仙给我们出的NOIP模拟题,不得不说好难啊QwQ,又倒数了~ T1 大美江湖 这个题是一个简单的模拟题. ----zay 唯一的坑点就是打怪的时候计算向上取整时,如果用ceil函数一 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
随机推荐
- 【LLM】在Colab上使用免费T4 GPU进行Chinese-Llama-2-7b-4bit推理
一.配置环境 1.打开colab,创建一个空白notebook,在[修改运行时环境]中选择15GB显存的T4 GPU. 2.pip安装依赖python包 !pip install --upgrade ...
- do{}while(0)用法
更安全的展开宏定义 #define DOSOMETHING foo1(); foo2(); if(condition) DOSOMETHING /* if(condition) foo1(); foo ...
- C++实现常用的文件操作
①输出到文本文件(txt) 1 #include<iostream> 2 #include<fstream> 3 using namespace std; 4 int main ...
- 捉虫日记 | MySQL 8.0从库某些情况下记录重放的CREATE TABLE、DROP TABLE语句到慢日志(slow log)
作者:卢文双 资深数据库内核研发 本文首发于 2023-11-30 20:47:35 https://dbkernel.com 问题描述 当主从复制采用 binlog 的行模式时,如果从库启用 slo ...
- 「AntV」路网数据获取与L7可视化
1. 引言 L7 地理空间数据可视分析引擎是一种基于 WebGL 技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用.L7 引擎支持多种数据源和数据格式,包括 GeoJSON.CSV ...
- 【已解决】java.text.ParseException: Unparseable date
今天在工作的时候遇到一个问题,我的一个字段queryDate保存不了,总是null值: java.text.ParseException: Unparseable date 报错的原因是日期格式转换错 ...
- 从bootstrap源码中学习Sass(一)
可以在github看代码,非常方便:https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss 就是有时候网络差. 基础用法 sc ...
- .NET Emit 入门教程:第六部分:IL 指令:3:详解 ILGenerator 指令方法:参数加载指令
前言: 在上一篇中,我们介绍了 ILGenerator 辅助方法. 本篇,将详细介绍指令方法,并详细介绍指令的相关用法. 在接下来的教程,关于IL指令部分,会将指令分为以下几个分类进行讲解: 1.参数 ...
- #结论#CF1776G Another Wine Tasting Event
题目 给定一个长度为 \(2n-1\) 的字符串,问一组使得 \(n\) 个长度不小于 \(n\) 的区间中字母W的个数相等的字母W的个数 分析 首先结论就是 \(\max_{i=1}^n\{cW[i ...
- go~istio加载wasm的步骤
参考 https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasm https://github.com/tetrate ...