CodeForces 255C. Almost Arithmetical Progression (DP)

实战指南:在华为防火墙上构建基于自签CA的SSL证书挑战式认证体系 本文详细介绍了在华为防火墙上构建基于自签CA的SSL证书挑战式认证体系的实战指南。通过自签CA证书生成、华为防火墙SSL VPN配置、客户端安装与测试等步骤,帮助企业实现更安全的远程办公接入方案,有效防范密码泄露风险。文章重点讲解了证书挑战登录的实现原理和配置细节,适用于企业网络安全建设。 阅读详情

题目链接:

CodeForces255C.


题目大意:

看起来题目给的公式很复杂,其实就是找最长的 1,2,1,2 类似这样的最长子序列.
数据小于4000.


解题过程:

  • 看到这个题首先就想到了用DP来做,毕竟正在刷DP的专题,刚开始想着这个题类似最长公共子序列那样,然后想了一个多小时也没结果,最后比赛快结束的半小时想起来这个和最长上升子序列有点像(后来发现也不是)。

  • 比赛完后想到了一个状态转移方程(错误的)用两个一维数组,一个用来记录以每一个数为最后一个数的最大长度,另一个储存最大长度的情况下的上一个数。
    错误的状态转移方程: a[i] = a[j] + 1 (a[i] == b[i])
    显然是错误的,于是我还考虑了下最长有多种情况的情况,用set储存上一个数,还是错误(毕竟想法就不太对)。

  • 于是隔了一天还是没想起来,于是百度了下题解,找到了一个不错的博客:题解
    可以看出来这篇博客风格也照抄了一下233,分析的很清楚,然后自己拿纸模拟了一遍,感觉这么简单的题怎么没想出来……


分析过程:

  • 用a[i][j]二维数组储存状态,i代表以第几个数结束,j代表倒数第二个数。
  • 状态转移方程:dp[i][j] = dp[j][k] + 1 (a[k]==a[i])
  • 看巨巨的题解K在状态转移的过程中就可以找到了。

AC代码:

#include <iostream>
#define MAX 4123
using namespace std;

int data[MAX];
int dp[MAX][MAX];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> data[i];
    }

    int ans = 1;
    for (int i = 1; i <= n; i++)
    {
        int k = -1;
        for (int j = 1; j < i; j++)
        {
            if (k == -1)
                dp[i][j] = 2;
            else
                dp[i][j] = dp[j][k] + 1;
            if (data[i] == data[j])
                k = j;
            if (ans < dp[i][j])
                ans = dp[i][j];
        }
    }
    cout << ans;
}

暴力遍历代码:

看题解之前想碰碰运气写的暴力代码,时间复杂度O(n^3),当然TLE啦……

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

set<int> check;
vector<int> store;
int data[41234];
int n;

int scan(int a, int b)
{
    int judge = 0;
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        if (judge == 0 && (data[i] == a || data[i] == b) || data[i] == judge)
        {
            if (data[i] == a)
            {
                judge = b;
            }
            if (data[i] == b)
            {
                judge = a;
            }
            sum++;
        }
    }
    return sum;
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> data[i];
        if (check.count(data[i]) == 0)
        {
            check.insert(data[i]);
            store.push_back(data[i]);
        }
    }
    int ans = 0;
    for (int i = 0; i < store.size(); i++)
    {
        for (int j = i; j < store.size(); j++)
        {
            int t = scan(data[i], data[j]);
            ans = ans > t? ans:t;
        }
    }
    cout << ans;
}
SAP RAP 校验全流程:从 EML 读取到消息上屏与阻止落库 本文系统梳理了 SAP ABAP RAP 中的校验流程(The Validation Process),结合 Airline/Connection 案例,详细讲解了三类核心校验:语义键唯一性、外键有效性和字段间一致性。文章覆盖了 EML 的 READ ENTITIES 操作、reported-* 与 failed-* 结构的使用方法、消息创建与字段绑定技巧,以及处理草稿数据时的 UNION 查询策略。通过代码示例演示了如何实现校验逻辑、生成错误消息并阻止无效数据持久化,同时提供了常见问题的排查建议。全文注重 阅读详情

相关推荐

Rstan下载安装攻略

准备把Rtools删掉,重新下载(胡乱猜测是安装顺序的问题),但是卸载时显示Rtools被占用,但我已经把该关的都关了。这一问题的出现,直接让我卸载掉了Rstudio,又重新安装了一个,不过这次安装在另一个磁盘,因为原来的内存不多了。或者参考知乎,使用清华镜像网址进行下载:(知乎链接)https://zhuanlan.zhihu.com/p/346947595(清华下载链接)https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

m0_64643017的博客 3099

Almost Arithmetical Progression(codeforces)(dp)

C. Almost Arithmetical Progression time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Gena loves sequences of numbers. Recently, he has discovered...

weixin_43438700的博客 215

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 849

Almost Arithmetical Progression

C - Almost Arithmetical Progression Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 255C Description Gena loves sequence

樱花满地集于我心,楪舞纷飞祈愿相随 564

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

CodeForces 256A (dp)

A. Almost Arithmetical Progression time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Gena loves sequences of n

不吸血的Vampire 1016

RT-DETR算法优化改进:Backbone改进 | HGBlock完美结合PPHGNetV2 GhostConv

GhostConv助力RT-DETR ,HGBlock与PPHGNetV2 GhostConv完美结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2909

C. Almost Arithmetical Progression (cf)

因为有重复的数,就让hi[]记录其值。go[]记录值对应的其中一个值的序列号。这样就把 具有相同值的数统一起来了。 昨天都是对的,今天发现自己提交的又被判成错误了,看来自己随便想的东东还是很容易有各种漏洞啊。 自己找了一下,也不知道有什么例子不对的。真不好意思 仅供小小的参考 #include #include #include #include #inclu

jiangjiashi的博客 1298

PCB仿真软件:Altium Designer_(15).AltiumDesigner的版本控制与项目管理

在进行PCB设计时,版本控制和项目管理是确保设计质量和团队协作效率的关键。Altium Designer 提供了强大的版本控制和项目管理功能,可以帮助设计团队更好地管理和维护项目。本节将详细介绍如何在Altium Designer中进行版本控制和项目管理,包括如何使用版本控制系统、如何管理项目文件、如何进行团队协作等。

kkchenjj的博客 1202

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2971

Codeforces 255C Almost Arithmetical Progression DP

点击打开链接 题意:n个数b[i],定义序列a[i]=a[i-1]+(-1)^(i+1) *q (i>2,q为常量) n 合法的序列形式为 x,x+q,x,x+q,x.. . x,x+q 下一个出现的x 一定为第一次出现在x+q之后的x(显然更优) //怎么快速找到下一个x? b[i]j的x 不用二分...从后往前推时,用pos记录J之后第一个和b[i]相等的位置  则设状态dp

Masamiiiiii 463

基于 Arduino 的鱼缸水质检测控制系统设计

本系统通过多传感器实时采集鱼缸水质参数(pH 值、温度、溶解氧、浊度),经 Arduino 主控芯片处理后,驱动执行模块自动调节水质,并通过显示模块实时展示数据。系统具备阈值报警、自动换水、温度调节、增氧等功能,适用于家庭或小型水族箱的水质智能管理。本设计提供了低成本、易扩展的鱼缸水质管理方案,适用于家庭水族箱或小型水产养殖场景,可根据实际需求调整传感器类型和控制逻辑。注:本设计如有疑问需要解惑可直接私信本人,看我个人简介。

weixin_42300449的博客 1086

codeforces 255C C. Almost Arithmetical Progression(dp)

题目链接:codeforces 255C题目大意:给出一个序列,求最长的子序列,满足隔位的两个数相等,问这个最长的子序列的长度是多少。题目分析: 定义状态dp[i][j]代表以第i个数为末尾,第j个数为倒数第二个的情况下的最长子序列。 转移的方法很简单:dp[i][j]=dp[j][k]+1(a[k]==a[i])dp[i][j] = dp[j][k] +1 (a[k] == a[i]) 其中k的找

llin-黎辰 1592

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CodeForces 255C Almost Arithmetical Progression (DP+离散化)

发现规律序列为a,b,a,b,a,b即可. #include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #define ll long long #define lrt int l,in...

满月照亮的路 204

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

CodeForces - 255C Almost Arithmetical Progression dp 或 贪心

Gena loves sequences of numbers. Recently, he has discovered a new type of sequences which he called an almost arithmetical progression. A sequence is an almost arithmetical progression, if its elemen...

还我笑颜 289

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【CodeForces - 255C】Almost Arithmetical Progression (dp,离散化)

题干: Gena loves sequences of numbers. Recently, he has discovered a new type of sequences which he called an almost arithmetical progression. A sequence is an almost arithmetical progression, if its e...

xuanweiace的博客 595

Codeforces 255C. Almost Arithmetical Progression

C. Almost Arithmetical Progression time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Gena loves sequences of numbers. Recently, he h...

u013345179的博客 244

codeforces 255C Almost Arithmetical Progression

传送门 题意:求长度最长的锯齿形子序列。(非连续) 锯齿形:ab型 12121 解析:dp dp[ i ][ j ] :表示 以a[i],a[j] 结尾的 符合条件的 子序列长度 dp[ i ][ j ] = dp[last][ i ]+1; 其中 a[last]==a[j] (头尾相同), last—i-----j 例子:12133212 j=8 i 从头推过来 推一遍就明白 #include<cstdio> #include<cstring> #include&lt

czyhbo的博客 246

cf#156-C. Almost Arithmetical Progression-DP

http://codeforces.com/problemset/problem/255/C 题意: 给n个数,找最长的交替串,形如 ABABABAB或者AAAAAAAA(可理解为B=A的特殊情况) 。。状态方程不太好想。。 对一个ABABABA串 dp[i][j], i是串的最后一个数的位置,j是 倒数第二个数的位置 那么,假设x=A[i]; dp[i][j]=dp[j

缺氧 510

codeforces255C.Almost Arithmetical Progression

题意:求出最长的i j i j i…j(i) 序列的长度 思路:先把各个数字离散化成1-n的形式,可以减少内存的使用,方便动态规划处理,然后用 dp[i][j] 表示最后两位为i j 的最大长度 #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization ("unroll-loops") #include<bits/stdc++.h> using namespace std;

frog77 209

Codeforces 156C Almost Arithmetical Progression

题意:给你一个数列,问你其中最长波形子序列(a,b,a,b,a,b这样)最长为多少. 解题思路:找到pre[i][j],就是 在 i 前面 且等于 a[i] 且离 i最近的值, dp[i][j] = dp[j][pre[j][i]] + 1; 解题代码: 1 // File Name: 255c.cpp 2 // Author: darkdream 3 // Create...

weixin_30555753的博客 105

CF->CodeForces 256A

Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 256A Description Gena loves sequences of numbers. Recently, he has discover

Fate_O的专栏 776

CF - 255C - Almost Arithmetical Progression(dp)

题意:给出一个序列b,求 b 中形如p, p - q, p, p - q, p, p - q, ... 这样出现的最长子序列的长度 (1 ≤ n ≤ 4000, 1 ≤ bi ≤ 10 ^ 6)。 题目链接:http://codeforces.com/problemset/problem/255/C ——>>状态:dp[i][j] 表示满足条件的最后两个数是 bi 和 bj 的子序列长度。。

无节操 1143

cf 156.div2 C Almost Arithmetical Progression

貌似是两周前的比赛,一直忙考试没写。      C题就是找个最长的交替序列,直接模拟可以过,比赛的时候以为会超时就没写,刚写了下居然过了      也可以用dp,dp[i][j]=dp[j][last]+1,last为最后一个和i相等的数下标,就是i和last是两个相同的数,中间加一个j为任意数   模拟代码: /* author:jxy lang:C/C++ university:Ch

弱弱的jxy 588

CF#255 C. Almost Arithmetical Progression (DP)

题目点我点我点我 C. Almost Arithmetical Progression time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

blanKey的博客 603
下一篇: SDUTOJ. LCS问题.(DP)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值