首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
3329: Xorequ
】的更多相关文章
BZOJ 3329: Xorequ [数位DP 矩阵乘法]
3329: Xorequ 题意:\(\le n \le 10^18\)和\(\le 2^n\)中满足\(x\oplus 3x = 2x\)的解的个数,第二问模1e9+7 \(x\oplus 2x = 3x\) 不就是 \(x\oplus (x<<1) = (x<<1)+x\) 吗 异或是不进位的二进制加法,那么,没有相邻的1 然后第一问数位DP就很好搞了 第二问,n个数中选i个不能相邻,\(\sum\limits \binom{n+1-i}{i}\) 太大了没法算了, DP一下试试…
3329: Xorequ
3329: Xorequ https://www.lydsy.com/JudgeOnline/problem.php?id=3329 分析: 因为a+b = a^b + ((a&b)<<1) 所以(x&(2x))<<1是0,就是没有相邻的1.然后计算多少x满足没有相邻的1. 第一问:数位dp一下,dp[i][j]到第i位,上一个数是j的方案数. 第二问:一共n位数,只有第n位为1,所以这n位没有限制,f[i]表示到第i位,的方案数,f[i]=f[i-1]+f[i-2…
BZOJ 3329 Xorequ (数位DP、矩阵乘法)
手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/article/details/83758728 题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3329 思路分析: 这道题完全是两道题拼在了一起.. 我们首先观察一下这个等式: 我们不妨可以把它移项变成\(x\ xor\ (2x)=3x\) 然后我们发现,\(3x=x+2x\), 也就是\(x\ xo…
[BZOJ 3329]Xorequ
Description 题库链接 给出 \(n\) ,分别求 \(\leq n\) 和 \(\leq 2^n\) 的满足方程 \[x\oplus 3x=2x\] 的正整数解个数. \(1\leq n\leq 10^{18}\) Solution 显然满足 \(x\oplus 2x=3x\) 即要满足 \(x\&(x<<1)=0\) .其含义就是数的二进制相邻的两位不能同为 \(1\) . 考虑第一种情况,即 \(\leq n\) .容易发现其实可以数位 \(DP\) . \(f_{i,…
BZOJ.3329.Xorequ(数位DP)
题目链接 x^3x=2x -> x^2x=3x 因为a^b+((a&b)<<1)=a+b,x^2x=x+2x,所以x和2x的二进制表示中不存在相邻的1. (或者,因为x+2x=3x,所以x^2x没有抵消任何的1,所以x和2x没有相邻的1) 那么第一问数位DP,第二问上界为\(2^n\),按位DP就行了. \(f[i]\)表示到第\(i\)位的方案数.每位要么填\(0\)要么填\(1\),所以\(f[i]=f[i-1]+f[i-2]\).就是斐波那契数列(从斐波那契表示法也能看出与…
BZOJ 3329 - Xorequ - 数位DP, 矩乘
Solution 发现 $x \ xor \ 2x = 3x$ 仅当 $x$ 的二进制中没有相邻的 $1$ 对于第一个问题就可以进行数位DP 了. 但是对于第二个问题, 我们只能通过递推 打表 来算出答案了. 推公式 打表 可知, 这是一个斐波那契数列, $a_0 = 1, a_1 = 2, a_2 = 3$.... 通过矩阵快速幂优化递推就可以过啦 Code #include<cstdio> #include<cstring> #include<algorithm>…
【BZOJ】3329: Xorequ
[题意]给定方程x^3x=2x,求<=x和<=2^x的满足方程的正整数个数. [算法]数位DP,矩阵快速幂 [题解]异或相当于不进位加法. 移项得,x^2x=3x,又因为x+2x=3x,所以x+2x不能产生进位. 又2x=x<<1,所以x+(x<<1)不进位当且仅当x中不存在相邻的1. 问题转化为求<=x的二进制不存在相邻1的正整数个数,state记录前一位为0或1,进行简单的数位DP.(递推的话就表示最高位,然后从下一位对应转移) 第二个问题,设2^x的答案为f…
BZOJ 3329 Xorequ:数位dp + 矩阵快速幂
传送门 题意 现有如下方程:$ x \oplus 3x = 2x $ 其中 $ \oplus $ 表示按位异或. 共 $ T $ 组数据,每组数据给定正整数 $ n $,任务如下: 求出小于等于 $ n $ 的正整数中,有多少个数是该方程的解 求出小于等于 $ 2^n $ 的正整数中,有多少个数是该方程的解,输出 $ mod $ $ 10^9+7 $ 的值. $ (n \leq 10^{18}, T \leq 1000) $ 题解 第一问 方程 $ x \oplus 3x = 2x $ 等价于…
bzoj 3329: Xorequ【数位dp+矩阵乘法】
注意第一问不取模!!! 因为a+b=a|b+a&b,a^b=a|b-a&b,所以a+b=a^b+2(a&b) x^3x==2x可根据异或的性质以转成x^2x==3x,根据上面的推导,得到 x^2x=x+2x-2(x&2x)==3x; 3x-2*(x&2x)==3x; x&2x==0; x&(x<<1)==0 也就是说x在二进制下不能有相邻的1 第一问用数位dp瞎搞一下就行 第二问,考虑递推,设f[i]为n==i的答案,已知f[n-1],f…
BZOJ 3329 Xorequ 数字DP+矩阵乘法
标题效果:特定n,乞讨[1,n]内[1,2^n]差多少x满足x^3x=2x x^3x=2x相当于x^2x = 3x 和3x=x+2x 和2x=x<<1 因此x满足条件IFFx&(x<<1)=0 故x的二进制拆分中随意两个1不相邻 令f[i]为i位数中最高位为0的满足条件的数的数量 g[i]为i位数中最高位为1的满足条件的数的数量 则显然有 f[i+1]=f[i]+g[i] g[i+1]=f[i] 于是第一问数位DP 第二问矩阵乘法就可以 #include <cstdi…