描述

今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做YZJ的大佬,在共同的集训生活中,大家建立了深厚的友谊,YZJ准备做点什么来纪念这段激情燃烧的岁月,想了一想,YZJYZJ从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为nn的只由"Y" "Z" "J"三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能有其他字符),YZJ学长同时禁止在串中出现ZZ相邻的情况,他认为,"ZZ"看起来就像骂人的话语,影响不好。

你,NEW ACMer,YZJ的崇拜者,能帮学长算一下一共有多少种满足要求的不同的字符串吗?

输入

输入数据包含多个测试实例,每个测试实例占一行,由一个整数n组成,(0<n<40)。

输出

对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。

输入样例 1

1
2

输出样例 1

3
8

来源

hg

在牛肉干上面刻字,刻字的选择是Y,Z,J三个字符中的任意一个。

限制条件:Z和Z不能相连。

接下来,画图找规律:(图省略了~~~)

1      f[1]=3

2      f[2]=8

3      f[3]=22

4      f[4]=60

突然发现f[n]=2*(f[n-1]+f[n-2])。

#include<cstdio>
const int maxn=50;
long long a[maxn]={1,3};
int main()
{int i,n;for(i=2;i<40;i++){a[i]=2*(a[i-1]+a[i-2]);}while(~scanf("%d",&n)){printf("%lld\n",a[n]);}return 0;
}

当然,如果说这道题的n的数据范围特别大的话,这样做肯定是不行的(爆数据范围),可以使用矩阵快速幂的方法来解决这个问题。

矩阵的构造:

现在是三个字符Y,Z,J,其中Z和Z不能相邻,那么所有的清苦应该有八种:

YY、YZ、YJ、ZY、ZJ、JY、JZ、JJ,将这八种情况用从0开始的数字表示,对应的数字分别为0、1、2、3、4、5、6、7.

对于YY来说,确定了第一个Y之后,它对后面的情况没有影响了,所以只需考虑后面的Y就行了,也就是YY,YZ,YJ这三种情况。

对应的数字分别为0,1,2.

同理找出其他的关系,然后构造矩阵:

代码如下:

#include<algorithm>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<cstring>
#define  P pair<long long,long long>
#define ms(a,b) memset(a,b,sizeof(a))
#define ll long long
using namespace std;
ll N,a,b,k;struct xiao
{ll f[8][8];
} ans,mapp;void init(xiao &ans)
{for(int i=0; i<8; ++i){for(int j=0; j<8; ++j){if(i==j)ans.f[i][j]=1;elseans.f[i][j]=0;}}
}void power(xiao &x,xiao &y,xiao &z)
{ms(z.f,0);for(int i=0; i<8; ++i){for(int j=0; j<8; ++j){if(x.f[i][j]){for(int k=0; k<8; ++k){z.f[i][k]+=(x.f[i][j]*y.f[j][k]);}}}}
}ll solve(ll k)
{init(ans);ll number=k;xiao temp=mapp,t;while(number){if(number%2==1){power(ans,temp,t);ans=t;}power(temp,temp,t);temp=t;number/=2;}return ans.f[0][0]+ans.f[0][1]+ans.f[0][2]+ans.f[0][3]+ans.f[0][4]+ans.f[0][5]+ans.f[0][6]+ans.f[0][7];
}int main()
{ll n;mapp={1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1};xiao t,x;power(mapp,mapp,t);while(cin>>n){printf("%lld\n",solve(n));}return 0;
}

2019第四次新生周赛——YZJ的牛肉干相关推荐

  1. 计算机学院2022级新生周赛(一)题解

    更好的阅读体验\color{red}{更好的阅读体验}更好的阅读体验 另一篇题解\color{red}{另一篇题解}另一篇题解 文章目录 A. Hello , HAUE B. 我必须立刻签到,因为它有 ...

  2. 成都东软学院新生周赛(五)

    成都东软学院新生周赛(五) 感受 这次比赛打的非常艰辛,全程1.20小时的时间全在写A题,而且还没有写出来.还是自己太菜了.比赛过程中根本就没有想到用位运算去写着三个题. 考点 位运算:位运算是二进制 ...

  3. 「CSP-S模拟赛」2019第四场

    「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...

  4. 2020级HAUT新生周赛(四)@张承树专场

    文章目录 A:会写脚本的月月鸟 B:别看了 这是水题 C:ACM脱单大法 D:Love_Jacques学长的游戏思维 E:后缀自动机next指针dag图上跑SG函数 F:新建 Microsoft Po ...

  5. Contest1003 - 河南工程学院2022级新生周赛(三)

    目录 1,6男 2,我要拿最多的money2.0 3,极致完美的AK 4,吃豆人 5,胡辣汤啊胡辣汤 6,HF波那契数列 7,小朱要解密码 8,苦命的毅哥 1,6男 题目描述 ZY看透了世态炎凉,对于 ...

  6. bistuacm 2019年第⑦场新生训练赛题解

    比赛链接:bistuacm 新生训练赛 第七场 难度:cf 900~1400 A 知识点:枚举 题意:寻找距离数组某个数最接近的a[i]<=k且b[i]=1的数. 解法:按题意模拟即可. #in ...

  7. 2019年广东工业大学新生赛 A-原初的信纸

    //准备加入acm校队,教练要我们新生参加一下这个新生赛,就把去年的题目写了,顺便作为我的第一条博客. 链接:https://ac.nowcoder.com/acm/contest/3036/A 来源 ...

  8. 软件工程实践2019第四次作业

    结对成员 031702208 031702212 需求分析--NABCD模型 N--Need 根据题目归纳痛点: 教师方面 偶尔想了解毕业学生的工作.发展情况,但没有适合的方式 新生方面 不知道如何选 ...

  9. ZZULI新生周赛(8)部分题题解

    问题 A: 一道简单题 题目描述 ZYZ老师正在热情的准备着给大家发放的冰墩墩(是我雪容融不配了),在每一个包裹里都有一定数量的冰墩墩,现在ZYZ老师为了提前给大家发放,他想找到包裹中数量最多的那一个 ...

  10. 河南工程学院2022级新生周赛(三)题解

    更好的阅读体验 \color{red}{更好的阅读体验} 更好的阅读体验 文章目录 A. 6男 B. 我要拿最多的Money2.0 C. 极致到完美的AK D. 吃豆人 E. 胡辣汤啊胡辣汤 F. H ...

最新文章

  1. 为什么 P8 程序员的代码你写不出来?零拷贝了解一下
  2. python中selenium中使用ajax_selenium 智能等待ajax完成调用
  3. 系列笔记 | 深度学习连载(6):卷积神经网络基础
  4. 用python输出回文数
  5. 大脚导入配置选择哪个文件_有史以来最全的 IntelliJ IDEA 配置图解
  6. 智能型住宅自动控制与管理系统分析
  7. 教师节,老师们最大的愿望竟然是。。 | 今日最佳
  8. P3850-[TJOI2007]书架【Splay】
  9. jedis StreamEntryID参数解释
  10. java 使用接口便于维护程序_Java初学——面向对象接口的应用
  11. linux -- su和sudo命令的区别
  12. python数值比较器_python笔记16(数据处理笔记1)
  13. delphi 消息列表中文说明
  14. 2021年1月13日以后,如何用Flash Player打开swf文件
  15. lenovo服务器换系统重装系统_lenovo镜像系统安装教程
  16. 合格的攻击性白帽黑客应该具备的基本素质(1)
  17. Python4班平均成绩统计_空中交通管理学院2017级学生 20182019学年第一学期成绩分析报告...
  18. 医疗是什么?AI医疗概念解析AI
  19. 华为运营商级路由器配置示例 | EVdPdNd VPLS over SRv6 TE Policy(静态配置)
  20. Android轻松实现日期选择器、生日选择器、自定义起始时间

热门文章

  1. 图片占内存容量计算公式
  2. 分而治之——最大子列和
  3. STM32-GPRS模块连接系统主站
  4. 到底何为产品架构师?
  5. 内网KMS服务器搭建分享
  6. 通往诺贝尔奖之路:盘点10个著名的科学家族
  7. 史上最全股票指标图文详解
  8. IDEA2019.3新版本 报错 Cannot resolve column 'ID'
  9. 批量导出导入docker镜像
  10. matlab 傅里叶变换 频谱图,傅里叶变换与信号频谱图.PDF