P4933 大师

简介: P4933 大师

P4933 大师

本题链接:P4933 大师

本博客给出本题截图

image.png

AC代码

代码解释:

f[i][j]代表的是在以第 i 项结尾,公差为 j 的所有等差数列的数量,在这里我们可以知道,如果我们 j 按照从 1 ~ M 来暴力枚举,显然会 TLE 思考后会发现,我们如果只去枚举 h[i] - h[j] 即可,因为可能会有负数:递减的等差数列,故可能会有 h[i] - h[j] < 0,这里我们把数组开成两倍之后用 h[i] - h[j] + M / 2 即可

这里提一下状态转移方程:

f[i][t] = (f[i][t] + f[j][t] + 1) % mol;

这里为什么要 + 1,可以理解成 在所有的以 j 结尾的数列多加一个 i ,再加上单独由 j 和 i 组成的这么一组数列

注意 dp 过程中我们不讨论只有一个电塔的情况,故我们的 res 初始化为 n

代码

#include <cstdio>
#include <algorithm>
using namespace std;
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1010, mol = 998244353, M = 40010;
int h[N];
int f[N][M];
int n;
int main()
{
  scanf("%d", &n);
  for (int i = 1; i <= n; i ++ ) scanf("%d", &h[i]);
  int res = n;
  for (int i = 1; i <= n; i ++ ) 
  {
    for (int j = i - 1; j; j -- )
    {
      auto t = h[i] - h[j] + M / 2;
      f[i][t] = (f[i][t] + f[j][t] + 1) % mol;
      res = (res + f[j][t] + 1) % mol;
    }
  }
  printf("%d\n", res);
  return 0;
}
目录
相关文章
|
5月前
|
测试技术
软件测试的艺术:从新手到大师
本文旨在通过浅显易懂的方式,引导读者深入理解软件测试的本质与重要性。我们将从测试的基本概念出发,探讨如何设计有效的测试用例,实施不同类型的测试策略,并最终成为一名能够预见潜在问题、优化测试流程的测试大师。无论你是初涉软件测试领域的新手,还是希望提升自己技能的资深人士,这篇文章都会为你提供有价值的见解和实用的技巧。
|
6月前
|
弹性计算 运维 自然语言处理
古希腊掌管Linux运维の神
阿里云的OS Copilot是专为Alibaba Cloud Linux 3设计的智能助手,提供命令行自然语言问答、辅助命令执行、阿里云CLI调用和系统运维调优等功能,简化Linux操作,尤其适合新手用户。要体验OS Copilot,用户需在x86平台的Alibaba Cloud Linux 3上使用,可通过ECS、KVM或Docker。免费试用ECS、学生优惠及老用户套餐可从阿里云官网获取。安装OS Copilot后,配置AK并使用`co`或`copilot`命令即可开始使用。该助手目前在与阿里云生态集成方面仍有提升空间。
|
存储 程序员 编译器
(猿如意)最近在用的一款神器,简直无敌
(猿如意)最近在用的一款神器,简直无敌
358 0
(猿如意)最近在用的一款神器,简直无敌
|
弹性计算 程序员 云计算
程序员从入门到大师,需要翻过这些山?
翻过大山,妹子向你招手,涨薪向你点头,成功给你加油!
程序员从入门到大师,需要翻过这些山?
|
机器学习/深度学习 物联网 Linux
期待你能成为孩子们的“全能超人”
API轻开发、低成本、高效率、易创新的方式,正在转向女性,孩子的市场,而你是否已经准备好迎接这盘棋~
2181 0
|
安全 大数据 机器学习/深度学习
关于音游,除了节奏大师,你还熟悉哪些?
提起音乐类游戏,我们大概首先想到的就是来自腾讯的节奏大师。其实,无论是在国内还是海外,制作精良而节奏紧凑的音乐类游戏都是诸多玩家的最爱。今天就让我们一起来看看几款时下超赞的音游——让我们一起在放送中寻找乐感,在协调下收获快乐~
2460 0