3329: Xorequ

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 1134  Solved: 491
[Submit][Status][Discuss]

Description

Input

第一行一个正整数,表示数据组数据 ,接下来T行
每行一个正整数N

Output

2*T行
第2*i-1行表示第i个数据中问题一的解,

第2*i行表示第i个数据中问题二的解,

Sample Input

1
1

Sample Output

1
2

第一问:

满足条件的x二进制中不存在相邻的1

所以可以直接数位DP

第二问:

按第一问打个表可以明显看出答案是斐波那契数列的第n+1项

矩阵快速幂

#include<stdio.h>
#include<string.h>
#define LL long long
#define mod 1000000007
LL dp[80][2], a[80];
typedef struct
{LL a[4][4];void init(){memset(a, 0, sizeof(a));a[1][1] = a[1][2] = a[2][1] = 1;}void unit(){memset(a, 0, sizeof(a));a[1][1] = a[2][2] = 1;}
}Matrix;
Matrix Jjcf(Matrix p1, Matrix p2)   /*矩阵乘法*/
{Matrix pe;LL i, j, k;memset(pe.a, 0, sizeof(pe.a));for(i=1;i<=2;i++){for(j=1;j<=2;j++){for(k=1;k<=2;k++)pe.a[i][j] = (pe.a[i][j]+p1.a[i][k]*p2.a[k][j])%mod;}}return pe;
}
Matrix Powto(Matrix p, LL k)
{Matrix bg, E;E.unit();if(k==0)return E;if(k==1)return p;bg = Powto(p, k>>1);bg = Jjcf(bg, bg);if((k&1)==1)bg = Jjcf(bg, p);return bg;
}
int main(void)
{Matrix Jz;LL T, n, i, temp, ans;dp[0][1] = dp[0][0] = 1;for(i=1;i<=62;i++){dp[i][0] = dp[i-1][1]+dp[i-1][0];dp[i][1] = dp[i-1][0];}scanf("%lld", &T);while(T--){scanf("%lld", &n);temp = n+1;for(i=0;i<=62;i++){a[i] = temp%2;temp /= 2;}temp = ans = 0;for(i=62;a[i]==0;i--);for(;i>=0;i--){if(a[i]==1 && temp==0)ans += dp[i][0];if(a[i]==1 && a[i+1]==1)temp = 1;}printf("%lld\n", ans-1);Jz.init();Jz = Powto(Jz, n+1);printf("%lld\n", Jz.a[1][1]);}return 0;
}

bzoj 3329: Xorequ(DP+矩阵快速幂)相关推荐

  1. 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂

    [题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...

  2. Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】

    题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...

  3. 第九届河南省赛 宣传墙 //状压dp+矩阵快速幂+dfs

    http://nyoj.top/problem/1273 状压dp+矩阵快速幂+dfs 1273-宣传墙 内存限制:64MB 时间限制:1000ms 特判: No 通过数:19 提交数:64 难度:4 ...

  4. BZOJ 2004 公交线路(状压DP+矩阵快速幂)

    注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...

  5. bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)

    4818: [Sdoi2017]序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB Submit: 769  Solved: 463 [Submit][Stat ...

  6. 2018.09.28 hdu5434 Peace small elephant(状压dp+矩阵快速幂)

    传送门 看到n的范围的时候吓了一跳,然后发现可以矩阵快速幂优化. 我们用类似于状压dp的方法构造(1(1(1<<m)∗(1m)*(1m)∗(1<<m)m)m)大小的矩阵. 然后 ...

  7. 骨牌问题(DP+矩阵快速幂)

    在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 * 3的方格,共有3种不同的排法.(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果) In ...

  8. foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂

    Problem 2198 快来快来数一数 Accept: 67 Submit: 194 Time Limit: 1000 mSec Memory Limit : 65536 KB Problem De ...

  9. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)

    题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为​. 3.如果当前回合掷得 ...

最新文章

  1. 李彦宏说自动驾驶比人更安全,还认为中国用户更愿意放弃隐私
  2. 90%的开发都不太考虑这个,但只要出问题直接公司完蛋!
  3. mac phpstorm调试php,MAC下phpstorm20190302+Xdebug2.7断点调试PHP | 朱斌技术博客
  4. 5G通信的一些关键技术
  5. 全国python一级考试_关于全国青少年软件编程(Python)等级考试试卷(一级)测试卷情况网络调研...
  6. Cent Os下安装软件之---源码安装
  7. 随风潜入夜,润物细无声
  8. Google Earth Engine(GEE)——使用在线的世界矢量边界作为研究区(国家和洲际),如何调用?
  9. dsoframer java_word在线编辑--------dsoframer.ocx 的使用(java 代码)
  10. 笔记本风扇控制程序,支持蓝天模具笔记本
  11. 【运维有小邓】日志分析软件 - EventLog Analyzer
  12. Macbook pro 2015款 换完硬盘bootcamp 尝试访问启动磁盘设置时出错解决方法
  13. Java编程:通过获取当前时间,判断今天星期几
  14. TI C2000介绍
  15. ◆2008 年广告创意设计师必备网址汇总◆
  16. 6种无线通信技术对比(WiFi,Zigbee,蓝牙,Lora,NB-lot,4G)。
  17. 门禁系统一定要服务器吗,门禁系统服务器功能配置
  18. 高防CDN是如何防护网站被攻击的
  19. 【论文笔记】End-to-end people detection in crowded scenes
  20. 基于 qiankun 的微前端实践

热门文章

  1. python怎么读写文件-python怎么读取文件内容
  2. python是什么 自学-python自学需要什么软件?
  3. python工资高还是java-python工资高还是java
  4. 5岁自学python编程-枣庄适合小学生学的少儿编程课程在哪里
  5. python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】
  6. 如何自学python知乎-你是如何自学 Python 的?
  7. HTTP协议详细介绍~超详细
  8. ijkplayer-添加播放截图功能
  9. python删除指定字符_python删除字符串中指定字符的方法
  10. git版本回退(回退提交到本地仓库代码)