传送门

这题很明显存在一个递推关系,思考了一下果然如此。

设dp[i][j]为前i项的和膜p为j的方案数,显然dp[i+1][j] = sum(dp[i][k]), (k + j != p), 那么问题来了,i和j的取值都为1e9,这个数组显然开不出来,开出来了也会超时。

我们观察可以发现,其实对每个j只有唯一一个k能使k + j == p, 可以算出k刚好取到1到p-1, 当我们求长度为i的总方案数时,可以看作加上了P-1个i-1的总方案数再减去一个sum(dp[i][k], k = 1 to p-1), 考虑优化空间 dp[i] = dp[i - 1] * (p - 1) - dp[i - 1] = dp[i - 1] * (p - 2);

dp[1] = p - 1;
dp[n] = dp[1] * pow(p - 2, n - 1);

n为1e9,用快速幂优化;

#include<bits/stdc++.h>
using namespace std;typedef long long LL;
typedef pair<int, int> P;const int maxn = 1e5 + 10;
const int M_MAX = 50000 + 10;
const int mod = 1e9 + 7;
const LL INF = 1e17;
const double eps = 1e-6;     LL quic_pow(LL x, LL n) {LL res = 1;while(n) {if(n & 1) res = res * x % mod;x = x * x % mod;n >>= 1;}return res;
}void solve() {int n, p;cin >> n >> p;LL ans = quic_pow((p-2), n-1) % mod * (p-1) % mod;cout << ans;
}int main()
{ios::sync_with_stdio(false);//freopen("D:\\in.txt", "r", stdin);solve();return 0;
}

Japanese Student Championship 2021 D - Nowhere P(递推 + 快速幂)相关推荐

  1. 【AtCoder】Japanese Student Championship 2019 Qualification题解

    Japanese Student Championship 2019 Qualification题解 A. Takahashi Calendar ◇题目传送门◆ 题目大意 定义Product Day为 ...

  2. codeforces 735C Tennis Championship(贪心+递推)

    Tennis Championship 题目链接:http://codeforces.com/problemset/problem/735/C --每天在线,欢迎留言谈论. 题目大意: 给你一个 n ...

  3. 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!

    [算法讲26:特征方程]求一阶递推与二阶递推通项公式 引入 齐次线性一阶递推 齐次线性二阶递推 题目解法 下文中详细证明略,可以看 [数列]特征方程与特征根 引入 HDU 2021多校一 Pass! ...

  4. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)

    题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...

  5. 2287. 【POJ Challenge】消失之物(数组递推\分治优化背包)

    2287. [POJ Challenge]消失之物 这题的思想和P4564 [CTSC2018]假面优化的思想一样,应该反过来说,假面那个题应该是借鉴这题的思路. 显然不能枚举每个物品消失O(n)O( ...

  6. 55 - 算法 -动态规划 -数塔问题 感觉都是数组建模 递推方法规则

    //模板#include <iostream> #include <cstdio> #include <string> using namespace std;/* ...

  7. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  8. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  9. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

最新文章

  1. Pytorch翻车记录:单卡改多卡踩坑记!
  2. Xgboost调参小结
  3. 视频干扰的原因及解决方法
  4. oracle odbc配置
  5. win8计算机配置怎么看,win8怎么看电脑配置?win8电脑配置的查看方法
  6. express服务器多次访问数据库实例
  7. mysql 嵌入式linux版本_PHP专栏 : MySQL 数据库安装详细
  8. 参考文献编号[9]之后出现空格解决方法
  9. 金融与量化分析 一; 金融 股票知识入门
  10. zzulioj1008: 美元和人民币
  11. git官网下载不了或下载很慢的解决办法!
  12. vivado IP核知识点学习
  13. 读书笔记《敏捷项目管理》第七章 定义产品愿景和产品路线图
  14. 科普系列:AUTOSAR与OSEK网络管理比较(上)
  15. 计算机英语教程第二版课文朗读,英语口语教程
  16. TCP/IP协议分层模型详解
  17. CWRU(凯斯西储大学轴承数据中心)数据集获取
  18. Linux kali无线安全之WPA/WPA2握手包捕获与爆破
  19. UCK Network 全球路演广州站 UCK通证全球首发上线引关注热潮
  20. 前端学习——Mobx

热门文章

  1. Bochs源码分析 - 16:conforming与non-conforming代码段区别以及Bochs代码的实现
  2. 怎么看外文文献的影响因子_[转载]如何查找高质量外文文献 - SCI/SSCI/AHCInbs...
  3. Personalized Web Search总结
  4. 2021年二级c语言采用的版本是,2021年二级c语言笔试必背-20210416065706.doc-原创力文档...
  5. SprintBoot:Post请求的参数多一个逗号的解决方法
  6. 免费使用腾讯云每天定时签到京东领取京豆
  7. sqlserver远程连接mysql_sqlserver2005远程连接 mysql
  8. 美通企业周刊 | 爱立信已获100份5G商用合同;北京广东世界五百强数量领跑全国​...
  9. Linux正则表达式和文本处理工具(gred、awk、sed)
  10. UE4 UDP是如何进行可靠传输的