[hdu6316]Odd shops
记$m=10$,即商品的种类
记$g(x)=1+\sum_{i=1}^{m}a_{i}x_{i}$,问题即求$f_{n}(x)=g^{n}(x)$非0项数(模2意义下)
注意到$f^{2}(x)\equiv f(x^{2})(mod\ 2)$,这是因为如果所选的项在两边不同,那么交换后即会抵消
令$F(n,A)$为$A(x)f_{n}(x)$非0项数,即有$\begin{cases}F(n+1,A)=F(n,A\cdot g)\\F(2n,A)=F(n,E)+F(n,O)\end{cases}$
(其中$E(x)$和$O(x)$满足$A(x)=E(x^{2})+xO(x^{2})$,即将$A(x)$按照奇偶次划分)
第一个式子显然成立,对于第二个式子,考虑有
$$
A(x)f_{2n}(x)=A(x)f_{n}^{2}(x)\equiv E(x^{2})f_{n}(x^{2})+xO(x^{2})f_{n}(x^{2})(mod\ 2)
$$
注意到$E(x^{2})f_{n}(x^{2})$和$xO(x^{2})f_{n}(x^{2})$两者没有重复项,因此直接将两者的非0项数相加即可,同时显然两者的非0项数等于$E(x)f_{n}(x)$和$O(x)f_{n}(x)$的非0项数,递归即可
对于$F(n,A)$,注意到$n$有$o(\log n)$种,$A$最高次数不超过10(归纳即可),在模2意义下只有$2^{m+1}$种,总状态数即为$o(2^{m+1}\log n)$,直接递归计算即可
另外,关于$A$的存储可以使用int来表示,那么两数(多项式)相乘复杂度为$o(m)$
总复杂度为$o(m2^{m+1}\log n)$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define mod 998244353
4 int n,x,g,sum[(1<<11)],f[40][(1<<11)];
5 int mul(int x,int y){
6 int ans=0;
7 for(int i=0;i<=10;i++)
8 if (x&(1<<i))ans^=(y<<i);
9 return ans;
10 }
11 int dfs(int n,int a,int s){
12 if (f[s][a]>=0)return f[s][a];
13 if (!n)return sum[a];
14 int aa=a;
15 if (n&1)aa=mul(a,g);
16 int E=0,O=0;
17 for(int i=0;i<=20;i++)
18 if (aa&(1<<i)){
19 if (i&1)O|=(1<<(i>>1));
20 else E|=(1<<(i>>1));
21 }
22 return f[s][a]=(dfs((n>>1),E,s+1)+dfs((n>>1),O,s+1))%mod;
23 }
24 int main(){
25 for(int i=0;i<(1<<11);i++)sum[i]=sum[(i>>1)]+(i&1);
26 while (scanf("%d",&n)!=EOF){
27 g=1;
28 for(int i=1;i<=10;i++){
29 scanf("%d",&x);
30 if (x&1)g|=(1<<i);
31 }
32 memset(f,-1,sizeof(f));
33 printf("%d\n",dfs(n,1,0));
34 }
35 }
[hdu6316]Odd shops的更多相关文章
- 【hdu多校联考第二场】Odd Shops
Description 这道题的题意是这道难读,大概就是给你n个商店,每个商店的重量为i的商品用ai表示,对于任意商店的a数列都是相同的,重量的范围为[1,10] 求购买方案总数为奇数的重量一共有多少 ...
- 2018 Multi-University Training Contest 2 Solution
A - Absolute 留坑. B - Counting Permutations 留坑. C - Cover 留坑. D - Game puts("Yes") #include ...
- RE:ゼロから始める文化課生活
觉得有必要在NOI之前开一篇学习内容记录. 至于为什么要取这个标题呢?也许并没有什么特殊的借口吧. 5.23 在LOJ上搬了三道原题给大家考了考,然后大家都在考试就我一个人在划水. SSerxhs 和 ...
- [LeetCode] Odd Even Linked List 奇偶链表
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- LeetCode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- tr:even 与tr:odd
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...
- Leetcode Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...
随机推荐
- 市区择房分析(ArcPy实现)
1, 背景 如何找到环境好.购物方便.小孩上学方便的居住区地段是购房者最关心的问题.因此购房者就需要从总体上对商品房的信息进行研究分析,选择最适宜的购房地段. 2,目的 学会利用缓冲区分析和叠置分析解 ...
- 掌握BeanShell,轻松处理jmeter中的数据
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15424558.html 博客主页:https://www.cnblogs.com/testero ...
- JavaCPP快速入门(官方demo增强版)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Windows10使用技巧
Windows10配置技巧 新机配置 "我的电脑"图标设置 在桌面右击鼠标=>个性化=>点击左侧"主题"=>点击相关的设置中的"桌面 ...
- RBAC 权限管理模型
一.RBAC模型--基于角色的访问控制 什么是RBAC RBAC(Role-Based Access Control)基于角色的访问控制.这是从传统的权限模型的基础之上,改进而来并且相当成熟的权限模型 ...
- UltraSoft - Alpha - Scrum Meeting 7
Date: Apr 22th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 完成课程中心的json格式传递 完成邮箱验证机制 刘zh 前端 ...
- [技术博客] 软工-Ruby on Rails前端工具链的配置以及对Web应用结构设计的一点思考
一.相关工具链简介 HAML HAML是专门面向Ruby on Rails模版语法设计的一门标记语言,其结合RoR的views部分模版语法的特点,对原来的*.html.erb(嵌入Ruby代码的HTM ...
- 【SDOI2014】数数(补)
见 AC自动机(补坑了) [SDOI2014] 数数 简要题意: 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为子串.例如当S={22,333,0233}时 ...
- gdal3.1.0+VS2017+geos+kml编译总结
1.简介 gdal3.1.0编译过程中必须依赖proj,编译gdal必须要编译proj,proj的编译需要sqlite3,因此想要编译gdal3.1.0需要先编译proj和sqlite3 2.关于sq ...
- 链地址法查找成功与不成功的平均查找长度ASL
晚上,好像是深夜了,突然写到这类题时遇到的疑惑,恰恰这个真题只让计算成功的ASL,但我想学一下不成功的计算,只能自己来解决了,翻了李春葆和严蔚敏的教材没有找到相关链地址法的计算,于是大致翻到两篇不错的 ...