51Nod 1301 集合异或和 —— 异或DP
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301
参考博客:https://blog.csdn.net/qq_33229466/article/details/78418414
原来是DP。
代码如下:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- typedef long long ll;
- int const maxn=,mod=1e9+;
- int n,m,w,bin[];
- ll ans,f[][][];
- int get(int x){int ret=; while(x)ret++,x>>=; return ret;}
- void init()
- {
- bin[]=;
- for(int i=;i<;i++)bin[i]=(bin[i-]<<);
- }
- int main()
- {
- init();
- scanf("%d%d",&n,&m); w=get(max(n,m));
- for(int i=,p,q;i<=w;i++)
- {
- memset(f,,sizeof f);
- p=; f[][][]=;
- int lim=;
- for(int j=;j<=max(n,m);j++)//枚举数
- {
- p^=; q=!p;
- if(j>=bin[lim])lim++;
- // int tmp=(j&bin[i]); //j&bin[i]不仅是0或1!!!
- bool tmp=(j&bin[i]);
- for(int s=;s<bin[lim];s++)//<
- {
- f[p][s][]=f[q][s][]; f[p][s][]=f[q][s][];
- for(int k=;k<=;k++)
- {
- if(j<=m)(f[p][s][k]+=f[q][s^j][k^tmp])%=mod;//给B
- if(j<=n)(f[p][s][k]+=f[q][s^j][k])%=mod;//给A
- }
- }
- }
- for(int s=bin[i];s<bin[i+];s++)ans=(ans+f[p][s][])%mod;
- }
- printf("%lld\n",ans);
- return ;
- }
51Nod 1301 集合异或和 —— 异或DP的更多相关文章
- 51nod 1301 集合异或和——异或dp
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301 好题!看了TJ才会. 因为是不可重集合,所以当然有前 i 个 ...
- 51nod 1301 集合异或和(DP)
因为当\(A<B\)时,会存在在二进制下的一位,满足这一位B的这一位是\(1\),\(A\)的这一位是\(0\). 我们枚举最大的这一位.设为\(x\)吧. 设计状态.\(dp[i][j][1/ ...
- [51nod] 1301 集合异或和
考虑不限制xor{Y}>xor{X} 考虑n=m的情况,每个数i∈[1,n]可以被分配到X集合或Y集合,或不分配 设f[S]表示{X} xor {Y} == S的方案数 有f[S]+=2*f[S ...
- [51Nod 1301] 集合异或和 (dp)
传送门 Solution 一道比较好的dp题 想了半天组合数QAQ 首先要知道的是 A<B一定是B有一位是1且A的这位是0且前面都相等 那么肯定是要枚举这一位在哪里然后求出方案数 方案数考虑类似 ...
- bzoj 4017 子序列和的异或以及异或的和
位运算很好的一个性质是可以单独每一位考虑..... 题解请看:http://blog.csdn.net/skywalkert/article/details/45401245 对于异或的和,先枚举位, ...
- 51Nod 1352 集合计数(扩展欧几里德)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1352 题目大意: 给出N个固定集合{1,N},{2,N-1} ...
- [BZOJ3261] 最大异或和 (异或前缀和,可持久化Trie)
Description 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Q l r x:询问操作, ...
- 异或序列 [set优化DP]
也许更好的阅读体验 \(\mathcal{Description}\) 有一个长度为 \(n\)的自然数序列 \(a\),要求将这个序列分成至少 \(m\) 个连续子段 每个子段的价值为该子段的所有数 ...
- 51nod 1622 集合对[算法马拉松19 C]
题目链接:https://www.51nod.com/contest/problem.html#!problemId=1622 第一次参加算法马拉松,我就是去看大神们疯狂秒题,然后感受绝望的orz.. ...
随机推荐
- 09Microsoft SQL Server 表数据插入,更新,删除
Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...
- selenium爬虫设置headers,代理IP等方法
https://blog.csdn.net/xc_zhou/article/details/80823855
- 基于springmvc、ajax,后台连接数据库的增删改查
前言 前段时间在博客园上找了一个springmvc的例子,照着学了一下,算是对springmvc有了一个初步的了解,打一个基础,下面是链接.(我只看了博客,视频太耗时间了) 博客链接:http://w ...
- LOJ #6009 「网络流 24 题」软件补丁
题面 某公司发现其研制的一个软件中有 $ n $ 个错误,随即为该软件发放了一批共 $ m $ 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误 ...
- CSS 嵌入,及其选择器
CSS 1. CSS样式表的几种使用方式 1.元素内嵌 <p style="font-size"></p> 2.内部文档内嵌 <style type= ...
- Python pygame库的应用
今天想用pygame库写一个击打外星人飞船的python程序 这个游戏的效果是操纵一个位于屏幕底端的飞船,通过上下左右控制飞船移动方向,按空格发射子弹.游戏中击杀一批飞船后进入下一关卡.每一关卡击打飞 ...
- vb 运行ppt示例代码
来源:http://support.microsoft.com/kb/222929 通过使用 PowerPoint 中的自动运行功能,您可以以编程方式打印.显示幻灯片及执行以交互式执行的大多数事情.按 ...
- 【Java基础】基本类型与运算【重要】
0. Java基本数据类型 Java的位运算(bitwise operators)直接对整数类型的位进行操作,这些整数类型包括long.int.short.char和 byte,位运算符具体如下表 ...
- RxJava如何结合观察者与链式处理
RxJava如何结合观察者与链式处理 Author: Dorae Date: 2018年12月3日17:10:31 转载请注明出处 一.概述 首先问自己几个问题,如果非常清楚这几个问题的目的与答案,那 ...
- css3的高级而有用且很少人知道的属性和样式
1.-webkit-mask 概属性可以给一个元素添加蒙层,蒙层可以是一个渐变或者半透明的png图片,这张png图片的 alpha 为 0 的位置会不显示元素这部分,alpha 为 1 的位置会显示元 ...