题目链接

题意及大体思路见风之守护

本题数据量很大,需要用高精度以及对原状态转移方程进行优化,

状态转移方程优化:通过观察可以发现当前位为0的情况只与上一位为1的情况有关,所有考虑将dp数组意义修改为当前不为0的所有情况,然后最后结果即为dp[n]+dp[n-1],其中当前位为1的状]态转移方程为:dp[i][1]=(dp[i-1][0]+dp[i-1][1])*(k-1),其中dp[i-1][0]=dp[i-2][1],所以对dp数组进行优化:dp[i]=(dp[i-1]+dp[i-2])*(k-1)

ac代码:

#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define INF 0x3f3f3f3f
#define pb push_back
//#define int long long
#define Mirai ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
typedef pair<int,int> pii;
const int N=1810;
int n,k;
vector<int> dp[N];
vector<int> mul(vector<int> A, int b)
{vector<int> C;int t = 0;for (int i = 0; i < A.size() || t; i ++ ){if (i < A.size()) t += A[i] * b;C.push_back(t % 10);t /= 10;}while (C.size() > 1 && C.back() == 0) C.pop_back();return C;
}
vector<int> add(vector<int> A, vector<int> B)
{if (A.size() < B.size()) return add(B, A);vector<int> C;int t = 0;for (int i = 0; i < A.size(); i ++ ){t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}if (t) C.push_back(t);return C;
}
void solve()
{cin>>n>>k;k--;string kk=to_string(k);for(int i=kk.size()-1;i>=0;i--)dp[1].pb(kk[i]-'0');for(int i=2;i<=n;i++){dp[i]=mul(add(dp[i-1],dp[i-2]),k);}auto C=add(dp[n],dp[n-1]);for(int i=C.size()-1;i>=0;i--)cout<<C[i];
}
signed main()
{Mirai;int T=1;//cin>>T;while(T--){solve();}
}

F - 心灵之霞(B - 风之守护plus)相关推荐

  1. go linux下进程守护,Linux系统进程管理-Go语言中文社区

    一.进程基础知识 1.1 Linux进程的概念 Process:是运行中的程序的一个副本,是被载入内存的一个指令集合.进程ID(Process ID,PID)号码被用来标记各个进程 UID.GID.和 ...

  2. java最全基础③进阶

    final 1.final关键字 1.1.final修饰的类无法继承. String就是final修饰 无法继承(成员变量才有初始值 局部变量没有初始值) new 构造方法的时候默认赋值 1.2.fi ...

  3. 【JavaSE进阶(下)】自学笔记 记得收藏时时回顾

    集合 集合概述 1.什么是集合?有什么用? 数组其实就是一个集合.集合实际上就是一个容器,可以来容纳其他类型的数据. 集合为什么说在开发中使用较多? 集合是一个容器,是一个载体,可以一次容纳多个对象. ...

  4. 树莓派安装docker

    树莓派:3B OS版本:2021-01-11-raspios-buster-armhf sudo apt updatesudo curl -sSL https://get.docker.com | s ...

  5. Dockerfile命令详解

    使用docker就会避免不了的要做各种镜像,就会用到dockerfile,记录一下dockerfile的主要命令 1.主要组成部分     dockerfile执行build命令时,是从上倒下依次执行 ...

  6. docker设置镜像源 树莓派_树莓派上 Docker 的安装和使用

    Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不 ...

  7. docker停止容器后配置_Docker 自学笔记 - april_aaa

    Docker为什么会出现? 一款产品从开发到上线,从操作系统,到运行环境,再到应用部署.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各个版本的迭代之后, ...

  8. Python使用xlwt和xlrd读写excel文件

    Python使用xlwt和xlrd读写excel文件 xlwt和xlrd是两个相互配套的模块,在Python中,用于将数据写入Excel文件和读取Excel文件的数据. 从字面即可看出xlwt是对xl ...

  9. 无限城app为什么服务器繁忙,无限城决战中上弦鬼为何一点忙都帮不上?无惨:全是混子...

    其实<鬼灭之刃>这部漫画已经走进了完结篇.关于大家在剧情上的探讨,我却发现了大家在探讨无限城决战的时候,一边会因为鬼杀队的惨烈结局而感到又悲伤又心满意足,一边还会问十二鬼月这边的阵营感到不 ...

最新文章

  1. 漫画 | 程序媛小姐姐带你一次了解什么是排序算法
  2. 使用SD-WAN进行WAN转换的业务影响—Vecloud微云
  3. C#二进制与字符串之间的相互转换
  4. 常见视频接口介绍,VGA,YPbPr,DVI,HDMI,DisplayPort
  5. gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
  6. hihocoder-Week173--A Game
  7. 神经网络----笔记(1)
  8. 揭秘网络:互联网调查入门 出版发行时间_cqy、cdx、zqsg……啥意思?揭秘QQ上的“00后黑话”...
  9. 国图软件无法生成地籍调查表
  10. 阿里云手机号短信设置
  11. 学习React基本渲染数据操作(-)
  12. 一行代码下载网页视频!
  13. jsp mysql超市管理_基于WEB的小型超市管理系统的设计与实现(JSP,MySQL)
  14. linux双核cpu调试软死锁问题,记一次linux通过jstack定位CPU使用过高问题或排查线上死锁问题...
  15. 知其然(1) 无法使用 DISTINCT, GROUP BY 等子句从视图中选择 ROWID 或采样
  16. 此刻,投资自己,才是最好的投资
  17. 工信部专项认证有什么用?
  18. 什么时候需要动态分配内存?
  19. Pytorch音频分类
  20. SLAM代码(SVO ros )

热门文章

  1. 按键精灵物理实现重复点击
  2. 肖 sir_就业课__007项目讲解
  3. 牛客刷题错题(一)——测试知识
  4. 动态规划的实际应用:图片压缩算法
  5. 在 typecho 中添加文章的最后更新时间功能
  6. 惊奇发现,ThinkPad R61i居然支持iAMT 2.5
  7. 转,转,转,结婚典礼的WBS
  8. 空白支票V.S. 空头支票
  9. 虚幻引擎图文笔记:官方模板中第三人称角色(ThirdPersonCharacter)的构成图解
  10. win10下安装pyspider总结