F - 心灵之霞(B - 风之守护plus)
题目链接
题意及大体思路见风之守护
本题数据量很大,需要用高精度以及对原状态转移方程进行优化,
状态转移方程优化:通过观察可以发现当前位为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)相关推荐
- go linux下进程守护,Linux系统进程管理-Go语言中文社区
一.进程基础知识 1.1 Linux进程的概念 Process:是运行中的程序的一个副本,是被载入内存的一个指令集合.进程ID(Process ID,PID)号码被用来标记各个进程 UID.GID.和 ...
- java最全基础③进阶
final 1.final关键字 1.1.final修饰的类无法继承. String就是final修饰 无法继承(成员变量才有初始值 局部变量没有初始值) new 构造方法的时候默认赋值 1.2.fi ...
- 【JavaSE进阶(下)】自学笔记 记得收藏时时回顾
集合 集合概述 1.什么是集合?有什么用? 数组其实就是一个集合.集合实际上就是一个容器,可以来容纳其他类型的数据. 集合为什么说在开发中使用较多? 集合是一个容器,是一个载体,可以一次容纳多个对象. ...
- 树莓派安装docker
树莓派:3B OS版本:2021-01-11-raspios-buster-armhf sudo apt updatesudo curl -sSL https://get.docker.com | s ...
- Dockerfile命令详解
使用docker就会避免不了的要做各种镜像,就会用到dockerfile,记录一下dockerfile的主要命令 1.主要组成部分 dockerfile执行build命令时,是从上倒下依次执行 ...
- docker设置镜像源 树莓派_树莓派上 Docker 的安装和使用
Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不 ...
- docker停止容器后配置_Docker 自学笔记 - april_aaa
Docker为什么会出现? 一款产品从开发到上线,从操作系统,到运行环境,再到应用部署.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各个版本的迭代之后, ...
- Python使用xlwt和xlrd读写excel文件
Python使用xlwt和xlrd读写excel文件 xlwt和xlrd是两个相互配套的模块,在Python中,用于将数据写入Excel文件和读取Excel文件的数据. 从字面即可看出xlwt是对xl ...
- 无限城app为什么服务器繁忙,无限城决战中上弦鬼为何一点忙都帮不上?无惨:全是混子...
其实<鬼灭之刃>这部漫画已经走进了完结篇.关于大家在剧情上的探讨,我却发现了大家在探讨无限城决战的时候,一边会因为鬼杀队的惨烈结局而感到又悲伤又心满意足,一边还会问十二鬼月这边的阵营感到不 ...
最新文章
- 漫画 | 程序媛小姐姐带你一次了解什么是排序算法
- 使用SD-WAN进行WAN转换的业务影响—Vecloud微云
- C#二进制与字符串之间的相互转换
- 常见视频接口介绍,VGA,YPbPr,DVI,HDMI,DisplayPort
- gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
- hihocoder-Week173--A Game
- 神经网络----笔记(1)
- 揭秘网络:互联网调查入门 出版发行时间_cqy、cdx、zqsg……啥意思?揭秘QQ上的“00后黑话”...
- 国图软件无法生成地籍调查表
- 阿里云手机号短信设置
- 学习React基本渲染数据操作(-)
- 一行代码下载网页视频!
- jsp mysql超市管理_基于WEB的小型超市管理系统的设计与实现(JSP,MySQL)
- linux双核cpu调试软死锁问题,记一次linux通过jstack定位CPU使用过高问题或排查线上死锁问题...
- 知其然(1) 无法使用 DISTINCT, GROUP BY 等子句从视图中选择 ROWID 或采样
- 此刻,投资自己,才是最好的投资
- 工信部专项认证有什么用?
- 什么时候需要动态分配内存?
- Pytorch音频分类
- SLAM代码(SVO ros )