标题效果:特定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 <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MOD 1000000007
using namespace std;
typedef long long ll;
struct Matrix{ll xx[2][2];Matrix(ll _,ll __,ll ___,ll ____){xx[0][0]=_;xx[0][1]=__;xx[1][0]=___;xx[1][1]=____;}ll* operator [] (int x){return xx[x];}
};
ll f[70],g[70];
void operator *= (Matrix &x,Matrix &y)
{int i,j,k;Matrix z(0,0,0,0);for(i=0;i<2;i++)for(j=0;j<2;j++)for(k=0;k<2;k++)z[i][j]+=x[i][k]*y[k][j],z[i][j]%=MOD;x=z;
}
ll Digital_DP(ll x)
{int i,temp=0;long long re=0;for(i=0;1ll<<i<=x;i++);for(;i;i--){if( x&(1ll<<i-1) ){re+=f[i];if(temp) return re-1;temp=1;}elsetemp=0;}return re-1;
}
ll Matrix_Mutiplication(ll y)
{Matrix a(1,0,0,1),x(0,1,1,1);while(y){if(y&1) a*=x;x*=x;y>>=1;}return (a[0][1]+a[1][1])%MOD;
}
int main()
{int T,i;ll x;f[0]=1;for(i=1;i<=63;i++)f[i]=f[i-1]+g[i-1],g[i]=f[i-1];for(cin>>T;T;T--){scanf("%lld",&x);printf("%lld\n", Digital_DP(x+1) );printf("%lld\n", Matrix_Mutiplication(x) );}
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

BZOJ 3329 Xorequ 数字DP+矩阵乘法相关推荐

  1. bzoj 3329: Xorequ(DP+矩阵快速幂)

    3329: Xorequ Time Limit: 1 Sec  Memory Limit: 256 MB Submit: 1134  Solved: 491 [Submit][Status][Disc ...

  2. BZOJ 3329 Xorequ (数位DP、矩阵乘法)

    BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...

  3. 【bzoj3329】Xorequ 数位dp+矩阵乘法

    题目描述 输入 第一行一个正整数,表示数据组数据 ,接下来T行 每行一个正整数N 输出 2*T行 第2*i-1行表示第i个数据中问题一的解, 第2*i行表示第i个数据中问题二的解, 样例输入 1 1 ...

  4. BZOJ 3329: Xorequ(数位dp+递推)

    传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...

  5. 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化

    挺好的数位dp-- 先说一下我个人的做法: 经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所 ...

  6. 51nod1836-战忽局的手段【期望dp,矩阵乘法】

    正题 题目连接:http://www.51nod.com/Challenge/Problem.html#problemId=1836 题目大意 nnn个点mmm次随机选择一个点标记(可以重复),求最后 ...

  7. P3193-[HNOI2008]GT考试【KMP,dp,矩阵乘法】

    正题 题目链接:https://www.luogu.com.cn/problem/P3193 题目大意 求有多少个长度为nnn的字符串不包含子串sss. 解题思路 考虑dpdpdp,用fi,jf_{i ...

  8. P5004-专心OI - 跳房子【dp,矩阵乘法】

    正题 题目链接:https://www.luogu.org/problemnew/show/P5004 题目大意 把NNN个无色格子排成一行,可以把某些格子染成黑色,但两个黑色格子之间必须至少有MMM ...

  9. [BZOJ]4180: 字符串计数 SAM+矩阵乘法+二分

    Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...

  10. 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)

    2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...

最新文章

  1. Java_Path_01_路径问题
  2. linux tar打包压缩排除某个目录或文件
  3. Java黑皮书课后题第6章:**6.26(回文素数)回文素数是指一个数同时为素数和回文数。编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开
  4. TypeScript里get属性的实现
  5. 458. 可怜的小猪
  6. [css] 用css3实现伪3D的文字效果
  7. 在线最小公倍数计算器
  8. 一分钟了解阿里云产品:安骑士
  9. 06-continue和break的区别
  10. 一个rsync自动备份并发信通知的shell脚本
  11. 软考论文-高项-进度管理、风险管理
  12. 数据中心监控软件 - ManageEngine OpManager
  13. 聚宽macd底背离_MACD背离技术分析(图解)
  14. Unity 3D游戏十一:坦克大战
  15. macbook清理磁盘空间
  16. 用支付宝和微信可以直接跳转拉起支付,API搭建比较方便第三方支付接口首选杉德比较靠谱,
  17. 用Python画等边三角形
  18. win10 系统更新服务器出错怎么办,解决更新win10系统出现错误提示“0x800f081f”的方法...
  19. 栅格化处理激光雷达点云数据
  20. 任意波形发生器的设计

热门文章

  1. 第0章 Oracle的安装及相关配置
  2. 用于主题检测的临时日志(861e8353-61d5-43a9-b1b4-e055dac9cf39 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
  3. 学习pytorch: 数据加载和处理
  4. 兼容M1芯片 Denise Audio poltergate Mac - 侧链均衡器
  5. Premiere Elements使用指南:键盘快捷键
  6. iOS底层探索之多线程(三)—初识GCD
  7. String 将GBK转UTF-8
  8. Web安全与Rational AppScan入门
  9. 一个流氓的SQL设计,备份(一个字段存多个数据)
  10. 学习U-Boot之--mkconfig