bzoj 3329: Xorequ(DP+矩阵快速幂)
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
Sample Output
第一问:
满足条件的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+矩阵快速幂)相关推荐
- 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂
[题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...
- Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】
题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...
- 第九届河南省赛 宣传墙 //状压dp+矩阵快速幂+dfs
http://nyoj.top/problem/1273 状压dp+矩阵快速幂+dfs 1273-宣传墙 内存限制:64MB 时间限制:1000ms 特判: No 通过数:19 提交数:64 难度:4 ...
- BZOJ 2004 公交线路(状压DP+矩阵快速幂)
注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...
- bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)
4818: [Sdoi2017]序列计数 Time Limit: 30 Sec Memory Limit: 128 MB Submit: 769 Solved: 463 [Submit][Stat ...
- 2018.09.28 hdu5434 Peace small elephant(状压dp+矩阵快速幂)
传送门 看到n的范围的时候吓了一跳,然后发现可以矩阵快速幂优化. 我们用类似于状压dp的方法构造(1(1(1<<m)∗(1m)*(1m)∗(1<<m)m)m)大小的矩阵. 然后 ...
- 骨牌问题(DP+矩阵快速幂)
在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 * 3的方格,共有3种不同的排法.(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果) In ...
- foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
Problem 2198 快来快来数一数 Accept: 67 Submit: 194 Time Limit: 1000 mSec Memory Limit : 65536 KB Problem De ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)
题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为. 3.如果当前回合掷得 ...
最新文章
- 李彦宏说自动驾驶比人更安全,还认为中国用户更愿意放弃隐私
- 90%的开发都不太考虑这个,但只要出问题直接公司完蛋!
- mac phpstorm调试php,MAC下phpstorm20190302+Xdebug2.7断点调试PHP | 朱斌技术博客
- 5G通信的一些关键技术
- 全国python一级考试_关于全国青少年软件编程(Python)等级考试试卷(一级)测试卷情况网络调研...
- Cent Os下安装软件之---源码安装
- 随风潜入夜,润物细无声
- Google Earth Engine(GEE)——使用在线的世界矢量边界作为研究区(国家和洲际),如何调用?
- dsoframer java_word在线编辑--------dsoframer.ocx 的使用(java 代码)
- 笔记本风扇控制程序,支持蓝天模具笔记本
- 【运维有小邓】日志分析软件 - EventLog Analyzer
- Macbook pro 2015款 换完硬盘bootcamp 尝试访问启动磁盘设置时出错解决方法
- Java编程:通过获取当前时间,判断今天星期几
- TI C2000介绍
- ◆2008 年广告创意设计师必备网址汇总◆
- 6种无线通信技术对比(WiFi,Zigbee,蓝牙,Lora,NB-lot,4G)。
- 门禁系统一定要服务器吗,门禁系统服务器功能配置
- 高防CDN是如何防护网站被攻击的
- 【论文笔记】End-to-end people detection in crowded scenes
- 基于 qiankun 的微前端实践