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

【动态规划、dp】P4933 大师

题目描述

ljt12138 首先建了 nnn 个特斯拉电磁塔,这些电塔排成一排,从左到右依次标号为 111nnn,第 iii 个电塔的高度为 h[i]h[i]h[i]

建筑大师需要从中选出一些电塔,然后这些电塔就会缩到地下去。这时候,如果留在地上的电塔的高度,从左向右构成了一个等差数列,那么这个选择方案就会被认为是美观的。

建筑大师需要求出,一共有多少种美观的选择方案,答案模 998244353998244353998244353

注意,如果地上只留了一个或者两个电塔,那么这种方案也是美观的。地上没有电塔的方案被认为是不美观的。

同时也要注意,等差数列的公差也可以为负数。

说明/提示

vvv 为最高的电塔高度。

对于前 30%30\%30% 的数据,$n \le 20 $。

对于前 60%60\%60% 的数据,n≤100n \le 100n100v≤2×103v \le 2 \times 10^3v2×103

对于另外 20%20\%20% 的数据,所有电塔的高度构成一个等差数列。

对于 100%100\%100% 的数据,n≤103n \le 10^3n103v≤2×104v \leq2 \times 10^4v2×104

思路

dpi,jdp_{i,j}dpi,j 表示以第 iii 个数结尾,公差是 jjj 的等差数列个数(不包括只有 111 个数的情况),那么显然的转移:

dpi,j=∑k=1i−1(dpk,j+1),(hi−hk=j)dp_{i,j}=\sum^{i-1}_{k=1}{(dp_{k,j}+1)},(h_i-h_k=j)dpi,j=k=1i1(dpk,j+1),(hihk=j)

其中加一是为了增加只有 (hi,hk)(h_i,h_k)(hi,hk) 两个数字的等差数列情况。最后答案加上只有一个数的等差数列个数 nnn 即可。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,h[1005],dp[1005][40005]; 
const int P = 998244353;
int ans = 0;
signed main() {scanf("%lld",&n);for(int i = 1;i <= n;i++) scanf("%lld",&h[i]);for(int i = 1;i <= n;i++) {for(int j = 1;j < i;j++) {int t = h[i] - h[j];t += 20000;if(dp[j][t]) dp[i][t] += dp[j][t];dp[i][t]++;dp[i][t] %= P;}for(int j = 0;j <= 40000;j++) {ans += dp[i][j],ans %= P;}}printf("%lld\n",(ans + n) % P);return 0;
}
http://www.xdnf.cn/news/18264.html

相关文章:

  • pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。
  • C++之多态(从0到1的突破)
  • Python如何将两个列表转化为一个字典
  • 基于STM32的APP遥控视频水泵小车设计
  • Codeforces MIN = GCD
  • Python爬虫实战:研究dark-fantasy,构建奇幻文学数据采集分析系统
  • BM25 vs TF-IDF:经典文本检索方法的对比
  • 【39】OpenCV C++实战篇——直线拟合、直线测距、平行线段测距;(边缘检测,剔除噪点,轮廓检测,渐进概率霍夫直线)
  • Django管理后台结合剪映实现课件视频生成应用
  • MySQL架构
  • MySQL实战45讲 24-25
  • hadoop技术栈(九)Hbase替代方案
  • Linux 进程间通信(IPC):信号、共享内存
  • Vue3 el-table实现 将子表字段动态显示在主表行尾
  • MySQL 三大日志:redo log、undo log、binlog 详解
  • 在职老D渗透日记day21:sqli-labs靶场通关(第27a关)get联合注入 过滤select和union “闭合
  • 趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
  • 基于VLM 的机器人操作视觉-语言-动作模型:综述 2
  • 选项式api和组合式api
  • 如何将Date类型的数据转换为LocalDateTime类型
  • Git的初步学习
  • 【力扣 Hot100】 刷题日记——双指针的经典应用
  • RabbitMQ:SpringAMQP Fanout Exchange(扇型交换机)
  • Java技术总监的成长之路(技术干货分享)
  • 驱动开发系列65 - NVIDIA 开源GPU驱动open-gpu-kernel-modules 目录结构
  • 【PyTorch】多对象分割项目
  • Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
  • 云计算核心技术之云存储技术
  • oc-mirror plugin v2 错误could not establish the destination for the release i
  • Windows Server DNS优化,网络响应速度提升方案