nssl1522-简单数数题【dp】

正题


题目大意

nnn个数的一个集合,求一个有多少个子集使得这个子集的所有子集的权值和的和是mmm的倍数


解题思路

考虑dp,选中集合中每一个数的贡献次数是2∣S∣−12^{|S|-1}2S1,设fi,j,kf_{i,j,k}fi,j,k表示选到第iii,现在选了jjj个数,摸上mmm的余数是kkk。显然这个无法通过

考虑对mmm进行分类,如果mmm是一个偶数,那么加入一个新元素时,相当于整个集合(包括以后加入的)都得乘以222,那么我们可以让m/2m/2m/2即可。

如果mmm是一个奇数,那么考虑总和sumsumsum如果sum%m≠0sum\% m\neq 0sum%m=0那么显然sum∗2k≠0(k∈N)sum*2_{k}\neq 0(k\in N)sum2k=0(kN)。然后我们可以发现jjj的上界就是mmm拥有的222质因子个数,如果再大那么显然没有意义。

kkk的上界是m2j−1\frac{m}{2^{j-1}}2j1m,如果按照张上下界来进行枚举那么时间复杂度为O(nm)O(nm)O(nm)


codecodecode

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5100,XJQ=1e9+7;
int n,m,a[N],p[N],f[2][14][N*2],ans,M;
int main()
{freopen("data.txt","r",stdin);scanf("%d%d",&n,&m);p[0]=1;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=m*2;!(i&1);i>>=1,++M);f[0][0][0]=1;for(int i=1;i<=n;i++){for(int j=0,w=m*2;j<=M;j++,w>>=1)for(int k=0;k<w;k++)f[i&1][j][k]=f[~i&1][j][k];for(int j=0,w=m*2;j<=M;j++,w>>=1){int now=(j==M)?(j):(j+1);int mod=(j==M)?(w):(w/2);for(int k=0;k<w;k++)(f[i&1][now][(k+a[i])%mod]+=f[~i&1][j][k])%=XJQ;}}for(int i=1;i<=M;i++)ans=(ans+f[n&1][i][0])%XJQ;printf("%d",ans);
}

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

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

相关文章

蛋糕店

蛋糕店 题目大意&#xff1a; 有n个人&#xff0c;让他们排队&#xff0c;每个人都有一个愤怒值&#xff0c;总值为每个人的愤怒值乘上&#xff08;他在队列中的位置-1&#xff09;加在一起 原题&#xff1a; 题目描述 最近小G新开了一家蛋糕店。开业第一天&#xff0c;一…

开源的,跨平台的.NET机器学习框架ML.NET

微软在Build 2018大会上推出的一款面向.NET开发人员的开源&#xff0c;跨平台机器学习框架ML.NET。 ML.NET将允许.NET开发人员开发他们自己的模型&#xff0c;并将自定义ML集成到他们的应用程序中&#xff0c;而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学…

nssl1519-背包签到题【数论】

正题 题目链接:http://10.156.31.134/contestnew.aspx?cid189 题目大意 nnn种物品&#xff0c;每种aia_iai​个。放进kkk个有序盒子求方案数&#xff08;可以不放完&#xff09; 解题思路 不放完其实就是k1k1k1个盒子&#xff0c;插板法求CkaiaiC_{ka_i}^{a_i}Ckai​ai​​&…

【dfs】相似度

相似度 题目大意&#xff1a; 有两个图&#xff0c;问他们的相似度是多少&#xff08;相似度为连接两个点的相样线的条数&#xff09; 原题&#xff1a; 题目描述 小G通过摆放一些城市和道路构成了一个世界地图。趁着小G出去玩的时候&#xff0c;大G把小G的世界地图上的城…

虚树-树上动态规划的利器

虚树 问题引入 在一类树上动态规划问题中,题目给出的询问往往包含树上的很多各节点,并保证总的点数规模小于某个值. 如果我们直接在整颗树上进行dpdp的话,时间复杂度与询问的次数有关,这显然是不可接受的,如果我们可以找到一种动态规划的方法,使其时间复杂度与询问中点的实际…

牛客练习赛69D-火柴排队【dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7329/D 题目大意 nnn个数的序列&#xff0c;排序后让随机kkk个数加上ddd&#xff0c;求依旧满足单调上升的期望概率 解题思路 对于一个位置加上ddd后会让到后面一段范围内都得加上ddd。我们预处理一个lil_ili​表示如果ii…

微软推出Visual Studio Kubernetes工具包预览版

微软表示&#xff0c;利用 Visual Studio Kubernetes 这个工具&#xff0c;使用者可以直接在该环境中&#xff0c;构建 Kubernetes 容器应用程序项目&#xff0c;或者让现有的 .NET 网页应用程序也兼容 Kubernetes。除了公有云基础架构环境要支持 Kubernetes&#xff0c;微软现…

伸展树模板

伸展树模板 #include <iostream> #include <cstdio>#define pr(x) std::cout << #x << " : " << x << std::endlclass SplayTree{ public:struct Node{int val;int size;int tag;Node *father;Node *son[2];Node(int val,Node *…

【DP】Sam数

Sam数 题目大意&#xff1a; 问位数为n&#xff0c;且每一位的数字与相邻数字的差值小于等于2的数有多少个 原题&#xff1a; 题目描述 小G最近发现了一种非常有趣的数&#xff0c;他将这种数称之为Sam数。Sam数具有以下特征&#xff1a;相邻两位的数字之差不超过2。小G还…

基于docker 如何部署surging分布式微服务引擎

1、前言转眼间surging 开源已经有1年了&#xff0c;经过1年的打磨&#xff0c;surging已从最初在window 部署的分布式微服务框架&#xff0c;到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎&#xff0c;再把业务进行剥离&#xff0c; 通过配置路径就能驱…

P4213-[模板]杜教筛(Sum)

正题 题目链接:https://www.luogu.com.cn/problem/P4213 题目大意 给出nnn&#xff0c;求∑i1nφ(i)\sum_{i1}^n\varphi(i)i1∑n​φ(i) 和 ∑i1nμ(i)\sum_{i1}^n\mu(i)i1∑n​μ(i) 解题思路 考虑如何将φ\varphiφ卷起来&#xff0c;我们可以乘上一个函数I(I(x)1)I(I(x)1…

线段树专题-等差子序列 BZOJ-2124

线段树专题-等差子序列 感谢 感谢孙耀峰的线段树PPT,使我获益匪浅. 题目来源 BZOJ−2124BZOJ-2124BZOJ−2124 题意 给出长度为nnn的1−n1-n1−n的排列AAA 问是否存在一组1≤p1≤p2≤...≤pl≤n,l≥31 \le p_1 \le p_2 \le ... \le p_l \le n,l \ge 31≤p1​≤p2​≤...≤p…

【模拟】小游戏

小游戏 题目大意&#xff1a; 有n个数形成一个环&#xff0c;从第S个开始&#xff0c;先往后数N个数然后把这个数取出来&#xff0c;再往前数K个数把这个数取出来&#xff0c;问取的数字依次是什么 原题&#xff1a; 题目描述 【题目背景】 yk同学是一个灰常灰常有爱的同…

P4051-[JSOI2007]字符加密【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P4051 题目大意 给一个字符串&#xff0c;求它当每个环状字符串&#xff08;比如ABCABCABC的就是ABC,CAB,BCAABC,CAB,BCAABC,CAB,BCA&#xff09;排序后所有串的末尾连起来当字符串。 解题思路 这个其实就是每个串的后缀加上…

DevOps 实践:千里之行

在上一篇 DevOps 渊源&#xff1a;角色消融 中我们分析了在作坊式团队中的责任重叠&#xff0c;也回顾了 DBA 角色的消融。那么&#xff0c;如今我们讲的 DevOps 又是什么角色的消融呢&#xff1f; 我想你已经猜到了&#xff0c;接下来要消融的角色就是运维人员了。那这次又是什…

线段树专题-黑白棋盘 BZOJ-1453

线段树专题-黑白棋盘 题目来源 BZOJ−1453BZOJ-1453BZOJ−1453 题意 QQQ次操作每次操作给出(x,y)(x,y)(x,y),将(x,y)(x,y)(x,y)个格子颜色取反每次操作后,输出棋盘上黑白联通块的个数n≤100,Q≤104n \le 100,Q \le 10^4n≤100,Q≤104 题解 显然不能直接套并查集,因为直接套…

约数个数

约数个数 题目大意&#xff1a; 求a到b之间每个数的约数的个数之和 原题&#xff1a; 题目描述 定义f(x)为x的约数个数&#xff0c;x为正整数。 f(a)f(a1)……f(b)&#xff0c;即a,b之间每个数的约数的总和。 输入 一行两个正整数a、b&#xff0c;以一个空格隔开。 输出…

P2257-YY的GCD【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P2257 题目大意 给出n,mn,mn,m&#xff0c;求∑i1n∑j1m[gcd(i,j)∈p]\sum_{i1}^n\sum_{j1}^m[gcd(i,j)\in p]i1∑n​j1∑m​[gcd(i,j)∈p] 定义ppp是质数集 解题思路 首先考虑定义f(x)∑i1n∑j1m[gcd(i,j)x]f(x)\sum_{i1}…

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ &#xff01;因此学习了一下这个开源框架&#xff01;下面对Exceptionless的学习做下笔记&#xff01;Exceptionless是什么&#xff1f;能做什么呢&#xff1f;“Exceptionless”这…

【dfs】【树】机器选择

机器选择 题目大意&#xff1a; 有一个树状的图&#xff0c;要求安一个点&#xff0c;使这个点到最远的点的距离最小 原题&#xff1a; 题目描述 自从省队NOI赛前集训在scz举行之后&#xff0c;一个名叫cs1.6.exe的文件开始在机房广泛使用起来。每天大家都要找神犇小X借移…