[Luogu] P4910 帕秋莉的手环
题目背景
帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里。不仅擅长许多魔法,还每天都会开发出新的魔法。只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦。
她所用的属性魔法,主要是生命和觉醒的“木”,变化和活动的“火”,基础和不动的“土”,果实和丰收的“金”,寂静和净化的“水”,机动和攻击的“日”,被动和防御的“月”七种属性
没有窗户的图书馆或许充满了灰尘,不过她认为在书旁边才是自己,所以她不能从书的旁边离开。这样已经一百年了。
题目描述
经过数年魔法的沉淀,帕秋莉将她那浩瀚无边的魔法的一部分浓缩到了一些特质的珠子中。
由于帕秋莉爱好和平,她只把象征生命和觉醒的木属性魔法和果实和丰收的金属性魔法放入了珠子中。
她认为光要这些珠子没有什么用处,于是她想将这些珠子串成魔法手环,这样就好看多了。于是,她拿出来用来串这些珠子的线 - 雾雨灵径。
她将这些珠子串到一起之后发现了一些性质:一段雾雨灵径的颜色是由两边的珠子的属性决定的,当一段雾雨灵径连接的两个珠子中只要有一个是金属性的,那么这段雾雨灵径的颜色就为金色
帕秋莉想要一个全都是金色的手环,而且她还想知道一共有多少种方案。由于她还要研究新的魔法,她就把这件事交给了你。由于她的魔法浩瀚无边,她有无穷的珠子
她并不想看着好几十位的数字,于是你需要对1000000007进行取模
题目解析
一眼不可做系列
首先理解一下题,一段线是金色的仅当它的两个端点至少有一个金属球。
然后…
没有高大上算法,只有手玩小数据得到的规律:
| n | 答案 | 
| 1 | 1 | 
| 2 | 3 | 
| 3 | 4 | 
| 4 | 7 | 
| 5 | 10 | 
规律就是ans[i] = ans[1-1] + ans[i-2]
鉴于数据范围矩阵乘法
Code
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const long long MAXN = 1e18;
const long long p = ; struct Matrix {
long long m[][];
int sx,sy;
} str,pro; long long n; inline void init() {
str.m[][] = ;
str.m[][] = ;
str.sx = , str.sy = ;
pro.m[][] = ;
pro.m[][] = pro.m[][] = pro.m[][] = ;
pro.sx = pro.sy = ;
return;
} inline Matrix mul(Matrix x,Matrix y) {
Matrix res;
memset(res.m,,sizeof(res.m));
res.sx = x.sx, res.sy = y.sy;
for(register int i = ;i <= x.sx;i++) {
for(register int j = ;j <= y.sy;j++) {
for(register int k = ;k <= x.sy;k++) {
res.m[i][j] += x.m[i][k] * y.m[k][j] % p;
res.m[i][j] %= p;
}
}
}
return res;
} inline Matrix quick_pow(Matrix x,long long y) {
Matrix res;
res.sx = x.sx, res.sy = x.sy;
for(register int i = ;i <= res.sx;i++) {
for(register int j = ;j <= res.sy;j++) {
if(i == j) res.m[i][j] = ;
else res.m[i][j] = ;
}
}
while(y) {
if(y & ) res = mul(res,x);
x = mul(x,x);
y >>= ;
}
return res;
} int main() {
int T;
scanf("%d",&T);
init();
str = mul(str,pro);
while(T--) {
scanf("%lld",&n);
init();
Matrix ans = mul(str,quick_pow(pro,n-));
printf("%lld\n",ans.m[][] % p);
}
return ;
}
[Luogu] P4910 帕秋莉的手环的更多相关文章
- 【题解】Luogu P4910 帕秋莉的手环
		原题传送门 "连续的两个中至少有1个金的"珂以理解为"不能有两个木相连" 我们考虑一个一个将元素加入手环 设f\([i][0/1]\)表示长度为\(i\)手环末 ... 
- P4910 帕秋莉的手环
		题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和 ... 
- 洛谷 P4910 帕秋莉的手环 矩阵乘法+快速幂详解
		矩阵快速幂解法: 这是一个类似斐波那契数列的矩乘快速幂,所以推荐大家先做一下下列题目:(会了,差不多就是多倍经验题了) 注:如果你不会矩阵乘法,可以了解一下P3390的题解 P1939 [模板]矩阵加 ... 
- [洛谷P4910]帕秋莉的手环
		题目大意:有一个$n(n\leqslant10^{18})$个点的环,每个点可以是$0$或$1$,要求相邻点中至少一个$1$,问方案数,多组询问. 题解:先考虑是一条链的情况,令$f_{i,j}$表示 ... 
- 洛谷 P4910 帕秋莉的手环
		题意 多组数据,给出一个环,要求不能有连续的\(1\),求出满足条件的方案数 \(1\le T \le 10, 1\le n \le 10^{18}\) 思路 20pts 暴力枚举(不会写 60pts ... 
- 【Cogs2187】帕秋莉的超级多项式(多项式运算)
		[Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio& ... 
- cogs 998. [東方S2] 帕秋莉·诺蕾姬
		二次联通门 : cogs 998. [東方S2] 帕秋莉·诺蕾姬 交上去后发现自己没上榜 就想着加点黑科技 把循环展开一下 结果WA了.. 万恶的姆Q /* cogs 998. [東方S2] 帕秋莉· ... 
- P4915 帕秋莉的魔导书(动态开点线段树)
		题目背景 帕秋莉有一个巨大的图书馆,里面有数以万计的书,其中大部分为魔导书. 题目描述 魔导书是一种需要钥匙才能看得懂的书,然而只有和书写者同等或更高熟练度的人才能看得见钥匙.因此,每本魔导书都有它自 ... 
- COGS2187 [HZOI 2015] 帕秋莉的超级多项式
		什么都别说了,咱心态已经炸了... question 题目戳这里的说... 其实就是叫你求下面这个式子的导函数: noteskey 其实是道板子题呢~ 刚好给我们弄个多项式合集的说... 各种板子粘贴 ... 
随机推荐
- 【140】◀▶ ArcGIS技巧
			目录: Add XY Data 图例修改 中文字符左斜体设置 专题图只显示“度” 制作渐变图例 待定 待定 待定 1. 在ArcGIS中插入含有经纬度的*.txt或者*.xls文件等 File> ... 
- P3161 [CQOI2012]模拟工厂
			传送门 先枚举选择哪些订单,然后转为判定是否可行 在能完成的情况下肯定是花越多时间提高生产力越优 我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\ ... 
- (9)css 链接
			本篇学习资料的主要介绍: 超链接文本的样式设计.鼠标指针效果. 1.超链接文本的样式设计 普通的网站中,所有的页面都会通过超链接相互链接在一起,这样才会形成一个有机的网站. 超链接是网页上普通的元素, ... 
- SQL Server 语法注意
			1.order by select a1,a1 from temp order by a1 此语句在高版本中执行提示a1列名不明确,在低版本中执行成功! 
- JavaScript 编程艺术-第4章(JavaScript美术馆)代码
			功 能:在同一个网页上切换显示不同的图片与文本(*亲测可用) 使用属性: a) document.getElementById(" ") ——返回一个与给定的id属性值的 ... 
- java  String类为什么是final的
			1.为了安全 java 必须借助操作系统本身的力量才能做事,jdk提供的很多核心类比如String,这类内的很多方法 都不是java编程语言本身编写的,很多方法都是调用操作系统本地的api,如果被继承 ... 
- python模拟登录的实现
			本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程. 当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ... 
- 找规律 Codeforces Round #309 (Div. 2) A. Kyoya and Photobooks
			题目传送门 /* 找规律,水 */ #include <cstdio> #include <iostream> #include <algorithm> #incl ... 
- Plugging an Unplugged Pluggable Database issue 3
			Multitenant Unplug/Plug Best Practices (文档 ID 1935365.1) 1.source 从0419 升级到1019 ,但是datapatch 没有回退041 ... 
- 操作JavaScript的Alert弹框
			@Testpublic void testHandleAlert(){ WebElement button =driver.findElement(By.xpath("input" ... 
