先对每一个求sg函数,暴力复杂度为$o(m^{2})$

取$k$满足$2^{k}\le x<2^{k+1}$(即$x$二进制下的最高位),考虑$y$与$2^{k}$的关系

1.若$1\le y<2^{k}$,那么必然有$1\le y\le x$,因此仅要求$0\le (x\oplus y)<x$

由于$y$的第$k$位为0且$x$的第$k$位为1,因此$2^{k}\le (x\oplus y)<x$,同时对于其中任意一个取值,根据异或的可逆性,都可以得到

2.若$2^{k}\le y\le x$,类似的必然有$0\le (x\oplus y)\le x-2^{k}$,同样其中任意一个取值都可以得到

换言之,$x$的后继的范围为$[0,x-2^{k}]\cup[2^{k},x)$,归纳$sg(x)=x-2^{k}+1$,则$sg(2^{k})=1$(其后继只有$sg(0)=0$),然后$sg(x)=mex(sg(0),sg([2^{k},x]))\ge x-2^{k}+1$

同时,由于$sg(x)\le x$,因此前面半段不能增加答案,即得到结论

进一步的,即求$\sum_{\bigoplus_{i=1}^{n}sg(a_{i})=0}1$,令$f_{n}(x)=\sum_{i=0}^{\infty}(\sum_{\bigoplus_{j=1}^{n}sg(a_{j})=i}1)x^{i}$,定义乘法为两式的异或卷积,即有$f_{n}(x)=f_{n-1}(x)f_{1}(x)=f^{n}_{1}(x)$,用快速幂+FWT计算,时间复杂度为$o(m\log_{2}n\log_{2}m)$

然后注意到FWT和IFWT的执行,在快速幂中存在重复,因此只需要在最开始和结尾执行一次,时间复杂度降为$o(m(\log_{2}mod+\log_{2}m))$,即可通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define mod 998244353
4 int n,ans,f[2000005];
5 long long m;
6 int main(){
7 scanf("%lld%d",&m,&n);
8 m%=mod-1;
9 for(int i=0;i<20;i++)
10 for(int j=(1<<i);j<=min((1<<i+1)-1,n);j++)f[j-(1<<i)+1]++;
11 for(int i=0;i<20;i++)
12 for(int j=0;j<(1<<20);j++)
13 if (j&(1<<i)){
14 int x=f[j],y=f[(j^(1<<i))];
15 f[(j^(1<<i))]=(x+y)%mod;
16 f[j]=(y+mod-x)%mod;
17 }
18 for(int i=0;i<(1<<20);i++){
19 int x=f[i],y=m;
20 f[i]=1;
21 while (y){
22 if (y&1)f[i]=1LL*f[i]*x%mod;
23 x=1LL*x*x%mod;
24 y>>=1;
25 }
26 }
27 for(int i=0;i<20;i++)
28 for(int j=0;j<(1<<20);j++)
29 if (j&(1<<i)){
30 int x=f[j],y=f[(j^(1<<i))];
31 f[(j^(1<<i))]=1LL*(mod+1)/2*(x+y)%mod;
32 f[j]=1LL*(mod+1)/2*(y+mod-x)%mod;
33 }
34 for(int i=1;i<(1<<20);i++)ans=(ans+f[i])%mod;
35 printf("%d",ans);
36 }

[luogu5387]人形演舞的更多相关文章

  1. 天天坐在电脑面前,小心抑郁!来自一个人的旅行<自导自演>

    画图画累了?写代码写累了?何不放松一下呢. 一望无际.亲近自然.忘乎所以.放空自我! 一个人的旅行, GoPro拍摄,后期采用FCPX.记录梦想, 自导自演.一个人去了很多地方, 认识和很多当地人,交 ...

  2. 从匿名方法到 Lambda 表达式的推演过程

    Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. 以上是msdn官网对Lambda 表达式 ...

  3. tyvj1191 迎春舞会之三人组舞

    背景     HNSDFZ的同学们为了庆祝春节,准备排练一场舞 描述     n个人选出3*m人,排成m组,每组3人.    站的队形——较矮的2个人站两侧,最高的站中间.    从对称学角度来欣赏, ...

  4. 从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN

    第三部分 NN-ANN 70年前的逆向推演 从这部分开始,调整一下视角主要学习神经网络算法,将其与生物神经网络进行横向的比较,以窥探一二. 现在基于NN的AI应用几乎是满地都是,效果也不错,这种貌似神 ...

  5. OpenCV人形检测Hog

    #include "iostream" #include "queue" using namespace std; #include "opencv2 ...

  6. C语言 数组做函数参数退化为指针的技术推演

    //数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h> //一维数组 ...

  7. Web Design:欧美人形剪影的404界面

    项目需求,必须得写个404界面,比较愁,因为网站属于那种电商+艺术品拍卖的网站,404界面不太好设计 很多时候网站直接代码报错输出404,不过设计过的404也有好处,比如改进用户体验.增强互动性之类的 ...

  8. Java 炫舞按键功能 DancingPlay (整理)

    /** * Java 炫舞按键功能 DancingPlay (整理) * 2016-1-2 深圳 南山平山村 曾剑锋 * * 设计声明: * 1.本次设计是模仿QQ炫舞类游戏,当图标到红色的检测区域时 ...

  9. [转] 与调试器共舞 - LLDB 的华尔兹

    你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? NSLog(@"%@", whatIsInsideThisThing); 或者跳过一个函数调用来简化程序的行为? NSNu ...

随机推荐

  1. Windows使用Git的vim编辑器编译运行程序

    Windows配置gcc 新建一个main.c $ touch main.c #在当前目录下创建main.c $ mkdir folder #在当前目录下创建folder文件夹 $ rm main.c ...

  2. SingnalR 从开发到生产部署闭坑指南

    前天倒腾了一份[SignalR在react/go技术栈的实践], 步骤和思路大部分是外围框架的应用, 今天趁热打铁, 给一个我总结的SignalR避坑指南. 1.SignalR 默认协商 不管是.NE ...

  3. [no code][scrum meeting] Alpha 1

    项目 内容 会议时间 2020-04-06 会议主题 团队任务分析与拆解 会议时长 30min 参会人员 全体成员 $( "#cnblogs_post_body" ).catalo ...

  4. BUAA-软件工程-个人总结与心得

    提问回顾以及个人总结 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习软件开发的过程,团队之间的写作 ...

  5. 用cmd命令行创建vue项目模板

    1.进入cmd命令行 输入存放项目的位置 2.通过vue create 项目名称 创建项目 3.选择Manually select features 4.通过空格选中第1.2.5.6.7.去掉8 4. ...

  6. 前端大牛带你了解JavaScript 函数式编程

    前言 函数式编程在前端已经成为了一个非常热门的话题.在最近几年里,我们看到非常多的应用程序代码库里大量使用着函数式编程思想. 本文将略去那些晦涩难懂的概念介绍,重点展示在 JavaScript 中到底 ...

  7. Python爬取COVID-19疫情监控实战

    一.项目概述 本项目基于Python.Flask.Echarts打造的一个疫情监控系统,涉及技术: Python网络爬虫 Python与Mysql数据库交互 使用Flask构建web项目 基于Echa ...

  8. 决策树 机器学习,西瓜书p80 表4.2 使用信息增益生成决策树及后剪枝

    使用信息增益构造决策树,完成后剪枝 目录 使用信息增益构造决策树,完成后剪枝 1 构造决策树 1 根结点的选择 色泽 信息增益 根蒂 信息增益 敲声 信息增益 纹理 信息增益 脐部 信息增益 触感 信 ...

  9. uvm_cookbook--DUT-Testbench Connections--Abstract-Concrete Class Connections

    抽象和具体class的连接 An alternative to using a virtual interface handle for DUT to UVM testbench connection ...

  10. Centos7 误删除bin/sbin之类的恢复

    参考连接:https://blog.csdn.net/weixin_41843733/article/details/107468767 挂载对应版本的光盘进入急救模式,复制已经丢失的命令到/mnt/ ...