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]。看第i位是不是1。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline LL read() {
LL x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int mod = 1e9 + ; LL dp[][], num[]; struct Matrix{
int a[][];
void Clear() { memset(a, , sizeof(a)); }
void init() { a[][] = a[][] = a[][] = ; }
Matrix operator * (const Matrix &A) const {
Matrix C; C.Clear();
for (int k=; k<; ++k)
for (int i=; i<; ++i)
for (int j=; j<; ++j)
C.a[i][j] = (C.a[i][j] + 1ll * a[i][k] * A.a[k][j]) % mod;
return C;
}
};
LL dfs(int x,int last,bool lim) {
if (!x) return ;
if (!lim && dp[x][last]) return dp[x][last];
int u = lim ? num[x] : ; // u = lim ? num[x] : 0 !!!
LL res = ;
for (int i=; i<=u; ++i)
if (!last || !i) res += dfs(x - , i, lim && i==u);
if (!lim) dp[x][last] = res;
return res;
}
LL Calc1(LL n) {
int tot = ;
while (n) {
num[++tot] = n & ;
n >>= ;
}
return dfs(tot, , ) - ;
}
LL Calc2(LL n) {
Matrix A; A.Clear(); A.init();
Matrix res; res.Clear(); res.a[][] = res.a[][] = ;
while (n) {
if (n & ) res = res * A;
A = A * A;
n >>= ;
}
return (res.a[][] + res.a[][]) % mod;
}
int main() {
int T = read();
while (T--) {
LL n = read();
printf("%lld\n%lld\n", Calc1(n), Calc2(n));
}
return ;
}
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 = ...
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/article/details/83758728 题目链接 htt ...
- [BZOJ 3329]Xorequ
Description 题库链接 给出 \(n\) ,分别求 \(\leq n\) 和 \(\leq 2^n\) 的满足方程 \[x\oplus 3x=2x\] 的正整数解个数. \(1\leq n\ ...
- 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 ...
- BZOJ 3329 - Xorequ - 数位DP, 矩乘
Solution 发现 $x \ xor \ 2x = 3x$ 仅当 $x$ 的二进制中没有相邻的 $1$ 对于第一个问题就可以进行数位DP 了. 但是对于第二个问题, 我们只能通过递推 打表 来算 ...
- 【BZOJ】3329: Xorequ
[题意]给定方程x^3x=2x,求<=x和<=2^x的满足方程的正整数个数. [算法]数位DP,矩阵快速幂 [题解]异或相当于不进位加法. 移项得,x^2x=3x,又因为x+2x=3x,所 ...
- BZOJ 3329 Xorequ:数位dp + 矩阵快速幂
传送门 题意 现有如下方程:$ x \oplus 3x = 2x $ 其中 $ \oplus $ 表示按位异或. 共 $ T $ 组数据,每组数据给定正整数 $ n $,任务如下: 求出小于等于 $ ...
- 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,根据上面的 ...
- 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 ...
随机推荐
- 通过ajax获取一个多位数,当容器显示在屏幕可视区时,让数字以滚动的形式显示
{ "data": "268" } json数据 <!DOCTYPE html> <html> <head lang=&quo ...
- phonegap 的指南针 api Compass
一. Compass 介绍方法参数 1.Compass 也就是,常说的指南针,又叫罗盘 2.方法 compass.getCurrentHeading compass.watchHeading co ...
- Java虚拟机1:开篇
1.前言 由于后期学习需要用到大量的JVM底层的东西,所有本人调整了一下学习计划,打算先从JVM入手,了解整个JAVA的运行机制,内存模型,编译原理等等一些底层的东西,这样在学习 后面的东西,会有一种 ...
- Architecture Design Process
Architecture Design Process The architecture design process focuses on the decomposition of a system ...
- BZOJ2333:[SCOI2011]棘手的操作(Splay)
Description 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 x v: ...
- boost::timer库使用
boost::timer boost库定时器使用,需要在编译时加相关链接库 -lboost_timer -lboost_system boost::timer::cpu_timer 和boost::t ...
- linux 重启 启动 apache服务
如何使用service httpd restart,不成功的话,直接去apache文件目录里去找可执行文件,执行启动. 一般apache目录 ./usr/local/httpd/bin ,在bin目 ...
- 类似QQ的聊天工程
首先建立一个html:<!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- Web项目开发中常见安全问题及防范
计算机程序主要就是输入数据 经过处理之后 输出结果,安全问题由此产生,凡是有输入的地方都可能带来安全风险.根据输入的数据类型,Web应用主要有数值型.字符型.文件型. 要消除风险就要对输入的数据进行检 ...
- 【usaco】1.1
你的飞碟在这儿Your Ride Is Here(难度:入门难度) 题目链接 题目大意 emmmm 输入两个字符串,问他们每个字母的asco码相乘后字符串是否相等. 思路 一道水题?(雾) 错误代码: ...