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>…
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一下试试…
手动博客搬家: 本文发表于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…
传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考虑递推按位做,设\(f(i)\)表示最后一位为\(0\)的答案,\(g(i)\)表示最后一位为\(1\)的答案,那么\(f(i)=g(i-1)+f(i-1)\),\(g(i)=f(i-1)\),整理一下发现\(f(i)=f(i-1)+f(i-2)\),就是斐波那契的形式,直接矩乘即可. 代码 #in…
题目链接 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]\).就是斐波那契数列(从斐波那契表示法也能看出与…
标题效果:特定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…
注意第一问不取模!!! 因为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…
题目大意:x xor 2x=3x(与x xor 3x=2x等价)求满足等式且小于n的x的个数,与满足等式小于2n的数的个数. 因为异或是不进位的二进制加法,那么因为结果正好和加法相同,那么说明x在二进制上没有相邻的1.那么简单的数位DP就可以求出满足这个的答案了. 再看subtask2,根据打表找规律可得,这就是斐波那契数列的第n+2项(以首项是0来说).那么只需要O(23⋅lgn)的矩阵乘法就可以了. 代码: #include<cstdio> #include<cstring>…
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,…
3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2267  Solved: 1040[Submit][Status][Discuss] Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了.花神的题目是这样的设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数…