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;
}
目录
相关文章
|
2月前
|
程序员 开发工具 git
读书|程序员如何传书到 Kindle
​Kindle 注定渐行渐远,书籍则继续伴我们同行。
46 1
|
7月前
嵌入式工程师的个人实验室(欣赏)
嵌入式工程师的个人实验室(欣赏)
37 0
|
存储 程序员 编译器
(猿如意)最近在用的一款神器,简直无敌
(猿如意)最近在用的一款神器,简直无敌
354 0
(猿如意)最近在用的一款神器,简直无敌
|
搜索推荐 Windows
分享5款2023年不容错过的宝藏软件
今天带来五款宝藏软件,身为宝藏男孩和宝藏女孩的你们,不试一下吗?
220 0
分享5款2023年不容错过的宝藏软件
|
弹性计算 程序员 云计算
程序员从入门到大师,需要翻过这些山?
翻过大山,妹子向你招手,涨薪向你点头,成功给你加油!
程序员从入门到大师,需要翻过这些山?
|
Java 程序员 数据处理
在美做开发多年,写给国内iPhone开发新手
  从这个论坛开始办这个板块就几乎没正面回复过什么,但平心而论,看的最多的板块也是这个。但从没有发表过自己的看法,因为任何一个人在今时今日都可以成为一个程序员。而在看了很多国内的程序大小论坛后,养成了一个习惯,不敢在论坛里做正面的回复,甚至不回复,乃至连文章也不写。
954 0
|
UED
与艾体验的奇妙之旅
这是今年初写的一篇文章,但一直没有对外发。我们一直在等禅道的新版本改版完。6月26日,经过四个多月的开发,禅道10.0版本对外发布。肯定会有很多朋友好奇,为什么我们来决定做禅道 UX改版,是哪家设计团队帮我们做的方案呢?让我来揭晓答案吧。
1892 0
理大师CEO薛希鹏:最好的推拿给最好的你
本文讲的是 :   理大师CEO薛希鹏:最好的推拿给最好的你 , 【IT168 案例】移动医疗的发展是伴随着技术的革新而来的。而随着移动互联网的高速发展,技术的变革深刻地改变了现实的生活。医疗这一大而重的传统行业也开始变得小而轻。
1835 0
|
安全 大数据 机器学习/深度学习