当前位置: 首页 > news >正文

如果搜索一定超时,如何用dp来以空间换时间

E - Alphabet Tiles (atcoder.jp)

题目大意:1到k长度的字符串时,在A-Z给定数量下,搭配出多少种不同的字符串

思路

排列组合,会死人的

暴搜:可以解决,但是时间太长

dp:考虑前 i 个字母,在长度为 j 下的字符串,有多少种情况,这是一个背包问题

难点

现在难点就来到了转移函数了

首先 i 可以继承 i-1,对于每个字母,遍历它的个数t(1到 l ,其中 l 是当前遍历的长度与字母个数的最小值),把 j-t的方案数乘以C(j,k) [相当于是分步乘法,把没有这个字母下j-t个已排好的位置放入c个当前字母,所以乘以“在j个位置下挑c个位置,用组合数”]

难点二:初始值,把dp[0][0] 和 dp[i][0] 都置为1,情况数为1 

#include<bits/stdc++.h>
using namespace std;
#define ll long longll dp[30][1005];
ll C[1005][1005]; 
const int N = 998244353;int main()
{int k;cin >> k;for(int i = 0 ; i <= k ; i++){C[i][0] = 1;for(int j = 1 ; j <= i ; j++){C[i][j] = C[i-1][j] + C[i-1][j-1];C[i][j] %= N; }}dp[0][0] = 1;for(int i = 1 ; i <= 26 ; i++){int c;cin >> c;dp[i][0] = 1;for(int j = 1 ; j <= k ; j++){for(int l = 0 ; l <= min(j,c) ; l++){dp[i][j] = dp[i][j] + dp[i-1][j-l]*C[j][l]%N; //加上使用字母0次、1次、2次的情况 dp[i][j] %= N; }}}ll ans = 0;for(int i = 1 ; i <= k ; i++){ans += dp[26][i];ans %= N;		}cout << ans;return 0;
}

反思

转移函数除了考虑从哪里转来,还要考虑自身的结果是怎么计算的(满足题意,不重不漏,用在本题里就是每个长度的串考虑用上0个、1个、2个当前字母),还要考虑自身会被哪些值在遍历时影响到,或有多次赋值,思考如何保证值在被累加或是其它积累。

http://www.lryc.cn/news/375348.html

相关文章:

  • MySQL常见的命令
  • 11 类型泛化
  • UE4_后期_ben_模糊和锐化滤镜
  • Spring Boot中Excel的导入导出的实现之Apache POI框架使用教程
  • CentOS搭建kubernetes集群详细过程(yum安装方式)
  • Java 面试题:Java 的 Exception 和 Error 有什么区别?
  • 在Vue 3中,el-select循环el-option的常见踩坑点,value值绑定对象类型?选中效果不准确?
  • Qt实现单例模式:Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS
  • 通过nginx转发后应用偶发502bad gateway
  • linux中如何进行yum源的挂载
  • ffmpeg的部署踩坑及简单使用方式
  • misc刷题记录2[陇剑杯 2021]
  • AI发展面临的问题? —— AI对创造的重新定义
  • k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
  • 上海亚商投顾:沪指缩量调整 PCB概念股持续爆发
  • QT属性系统,简单属性功能快速实现 QT属性的简单理解 属性学习如此简单 一文就能读懂QT属性 QT属性最简单的学习
  • 【IEEE出版丨EI检索】2024新型电力系统与电力电子国际会议(NPSPE 2024)
  • 【Netty】nio阻塞非阻塞Selector
  • ES 操作
  • uniapp如何实现跳转
  • Stable-Diffusion-WebUI 常用提示词插件
  • 单片机 PWM输入捕获【学习记录】
  • 3.1、前端异步编程(超详细手写实现Promise;实现all、race、allSettled、any;async/await的使用)
  • 3.1. 马氏链-马氏链的定义和示例
  • 红利之外的A股底仓选择:A50
  • wondershaper 一款限制 linux 服务器网卡级别的带宽工具
  • 独孤思维:盲目进群,根本赚不到钱
  • 针对indexedDB的简易封装
  • 网络编程--网络理论基础(二)
  • Python MongoDB 基本操作