牛客-Arithmetic Progressions(dp优化)

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目? 本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。 阅读详情

在这里插入图片描述

题意

给你 n 个数,让你从中找出最长的等差序列

思路

dp求最长等差数列的长度
dp [ i ] [ j ] :以第 i 个数为倒数第二位,第 j 个数为倒数第一位的等差序列的长度;
转移方程 dp [ i ] [ j ] = dp [ k ] [ i ] + 1;
如果 n > = 2 , 那么等差序列最短长度也是 2 ,所以 dp 初始化可以初始化为 2 .

代码
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f
#define P pair<int,int>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double eps=1e-7;
const double pai=acos(-1.0);
const int N=2e4+10;
const int maxn=4e5+10;
const int mod=1e9+7;
//const int d[4][2]={0,1,1,0,-1,0,0,-1};
int dp[5010][5010];
int n,a[5010];
int main(){
	//ios::sync_with_stdio(false);
    scanf("%d",&n);
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    sort(a,a+n);
    for(int i=0;i<n-1;i++)
    {
    	for(int j=i+1;j<n;j++)
    	{
    		dp[i][j]=2;
		}
	}
    int maxx=2;
    for(int i=1;i<n-1;i++)
	{
    	int j=i+1,k=i-1;//这里是优化了一下(如果不优化会 T ,原来是三层循环)
    	//因为 k < i < j ,我们可以直接让j从i+1递增,k从i-1递减,这样就变成了两层,时间复杂度大大降低
    	while(k>=0&&j<n)
		{
    		if(a[j]-a[i]==a[i]-a[k])//差值相等,说明正好,更新 dp 
			{
				dp[i][j]=dp[k][i]+1;
				if(dp[i][j]>maxx) maxx=dp[i][j];
				k--,j++;
			}
			else if(a[j]-a[i]<a[i]-a[k]) j++;
			else k--;
			//差值不相等,往小的方向移动,因为移动后小的差值才会变大
		}
    }
    printf("%d",maxx);
    return 0;
}
华为OD机试2025C卷 - CPU调度策略 (C++ & Python & JAVA & JS & GO) 华为OD机试 2025C卷 CPU调度策略,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 阅读详情

相关推荐

Unity AR涂涂乐实战:用户上传图片秒变3D模型新皮肤(附完整代码)

本文详细介绍了如何在Unity AR应用中实现用户上传图片动态生成3D模型皮肤的功能,重点讲解了动态创建材质球的技术方案和性能优化策略。通过完整的代码示例,开发者可以学习到多源图片处理、移动端内存管理以及AR场景适配等核心技巧,快速打造高性能的儿童教育类AR应用。

weixin_31509753的博客 370

Arithmetic progression

1

qq_66485519的博客 306

Oracle数据库安装图文教程 附百度云oracle Database 11g 安装包

一,Oracle数据库安装包下载 1.从Oracle官网下载所需的数据库安装包【下载需要注册登录Oracle账户】     http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 2.此处有下载好的Oracle Database 11g Release 2  百度云网盘  提取码:z...

向来如此,就一定是对的吗 6万+

Arithmetic Progressions

题目链接:Arithmetic Progressions 直接令 dp[i][j] 为 a[i] 为序列最后一个数,a[j]为倒数第二个数的最大值。 每次枚举j的时候,找到对应的k,使得a[k]+a[i]=2*a[j],直接转移即可。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc+...

青烟绕指柔的博客 1096

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(1)

clusterProfiler: universal enrichment tool for functional and comparative studyClusterProfiler: 用于功能和比较研究的通用富集工具总览1. 引言1.1 术语1.1.1 基因集和通路1.1.2 基因同源(GO)1.1.3 京都基因与基因组百科全书(KEGG)1.1.4 其他基因集2. 功能富集分析方法2.1 过度表征分析(Over Representation Analysis)2.2 基因集富集分析(Gene Se

小哲的博客 1365

Arithmetic Progressions(简单枚举)

Arithmetic Progressions An arithmetic progression is a sequence of the form a, a+b, a+2b, ..., a+nb where n=0,1,2,3,... . For this problem, a is a non-negative integer and b is a positive integer. ...

Simone chou... 368

YOLOv5算法改进(22)— 更换主干网络MobileNetv3 + 添加CA注意力机制

本节课就让我们结合论文来对YOLOv5进行组合改进(更换主干网络MobileNetv3 + 添加CA注意力机制),小白必学~!🌈

小哥谈 2816

[USACO]Arithmetic Progressions

Arithmetic Progressions An arithmetic progression is a sequence of the form a, a+b, a+2b, ..., a+nb where n=0,1,2,3,... . For this problem, a is a non-negative integer and b is a positive integer.

newcomer 1091

Codex 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例将展示如何用 Codex 生成 Python 脚本,通过 `ezdxf` 库绘制标准 DXF 格式的 CAD 机械图纸。我们会从零开始,逐步实现直线、圆、圆弧、标注等基本图形元素,最终绘制出一张包含主视图、俯视图、尺寸标注、标题栏和技术要求的完整法兰盘零件图。还会演示参数化批量生成不同规格零件图和自动 BOM 物料清单,生成的 DXF 文件可直接在 AutoCAD、FreeCAD 中打开。全程用自然语言驱动 Codex,工程师看完直接上手!

yueyeguzhuo的专栏 2067

详解vit_base_patch16_224

ViT-Base模型的核心思想是将输入图像划分为多个小块(patches),并使用Transformer架构来处理这些小块。具体来说,ViT-Base使用16x16像素的patch大小,输入图像的尺寸为224x224像素,这意味着每张图像将被划分为49个patch(22416×22416=14×14=19616224​×16224​=14×14=196个patch)。ViT-Base(ViT-B/16)通过将图像处理任务转化为序列处理任务。

具身机器人和通用AI 3225

Arithmetic Progressions(usaco)

/* ID:tianlin2 PROG:ariprog LANG:C++ */ #include #include #define MAX 125020 using namespace std; int total=0; ifstream fin("ariprog.in"); ofstream fout("ariprog.out"); class assd { public: int

一【¢Y】月木木 682

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Arithmetic Progression 题解(随机数使用)

思路: 本题的意思:求首项与公差。 第一部分:观察一下,题目的第二类操作(比某数大,有单调性)明显是要我们用二分(或者我觉得其实随机数也行,根据随机数来不断缩小范围,但是这题练二分)求最大值,大概要操作Log2 1e9= 29.897353约30次。 float f1=3e2;//3*(10^2); f1结果为300; float f1 =3e-2;//3*(0.1^2); f2结果为0.03; 第二部分:求公差,由于一开始已经有n,有了公差和最大值就有了首项,这时就要用到第一个操作。 对于任意三个数,我们

qq_36550533的博客 366

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

等差数列

题目描述 Description 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列。 在这个问题中a是一个非负的整数,b是正整数。写一个程序来找出在双平方数集合(双平方数集合是所有能表示成p的平方 + q的平方的数的集合,其中p和q为非负整数)S中长度为n的等差数列。 输入描述 Input Descriptio

Rookie的博客 885

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

解题报告:Arithmetic Progressions 分块+FFT

题意: 给定一个长度为n(n 序列中的每个元素 (1 思路: 因为子序列是有序的,所以并不能直接用FFT求的答案 想了想好像也没有更好的写法,只能暴力的分块一下。 每个块需要统计一下几种情况:设有k个块 , m = (n/k) ①:选中序列中的一个数在块里,那么可以假设选中的第一个或者第二个或者第三个在块里,统计另外两个的情况,发现如果枚举第二个在块内,然后让块前的数列和块后

Hee的博客~ 420

USACO Arithmetic Progressions(暴力)

题目请点我 题解: 这道题的题意是找出集合里所有固定长度为N的等差数列,集合内的元素均为P^2+q^2的形式(0<=p,q<=M)。时间要求5s内,本着KISS,直接暴力。但是后来竟超时了,检查后发现是map的问题,本想利用map实现常数级的查找,但是显然map内部不是这样的,所以对于普通的数据类型,数据量不大(250^2+250^2)的情况下还是利用数组标记查找好一点,get。 代码实现:/

EaShion1994的专栏 1086

B - Arithmetic Progressions(待解决

https://vjudge.net/contest/394066#problem/B https://vjudge.net/problem/Gym-102082B/origin 数据量大不能用数组查 用了二分,在test57的地方OT了,应该是算法有问题(待补题 附未通过代码: #include <iostream> #include <cstdio> #in...

YukiRinLL的博客 191

Codeforces 978D. Almost Arithmetic Progression(1ni)

题目地址 点击打开链接D. Almost Arithmetic Progressiontime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPolycarp likes arithmetic progressions. A sequence [a1,a...

1ni 929

USACO:1.4.3 Arithmetic Progressions 等差数列 解析

Arithmetic Progressions 等差数列 解析 题目描述: 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...) 在这个问题中a 是一个非负的整数,b 是正整数. 写一个程序来找出在双平方数集合S 中长度为n 的等差数列. 双平方数集合是所有能表示成p2+q2 的数的集合. PROGRAM NAME: ariprog

蓝e的专栏 2896

Arithmetic Progressions 牛客国庆训练 4 B dp

Arithmetic Progressions 贴个链接 题意 给一个数字的集合,让从集合中选出一些数让他们构成等差数列,问做多能选的数有多少个 集合大小:5000 题解 这题都不会?我是好菜了,,我好菜,自闭ing dp[i][j] 表示第 i 个数字是最后一项,第 j 个数字是倒数第二项的最长长度。 所以转移怎么转移? 肯定是枚举 i 、j 然后枚举i之前的一个位置pos,从dp[pos][i] 转移过来。 pos 得满足:a[j] - a[i] == a[i] - a[pos]; 并且pos 得是

qq_44784019的博客 165

2019牛客暑期多校训练(第一场)E-ABBA(卡特兰数的扩展)(超级无敌巨详细)

目录前言题目题目链接题目大意题意理解哪里用到了贪心哪里出现了卡特兰数非降路径预备知识0预备知识1 前言 距离第一场已过去一周多,这一题在我脑海中挥之不去,当时没做出来,知道要贪心,仅仅暴力出了小规模的结果,队友发现m=0和n=0时结果是卡特兰数,如今在恶补了一些卡特兰数的习题后,我终于对这题有了较为清晰的认识。下面结合卡特兰数的一种应用——非降路径,以组合数学的角度分析一下这题,抛砖引玉。 题目 ...

悲伤无声地涌出来 1207
上一篇: upc-Optimal Coin Change(完全背包+路径回溯记录)
下一篇: upc-Gold Mine(dp)
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值