C. Tenzing and Balls(dp)

news2024/9/24 17:15:19

Problem - C - Codeforces

Tenzing在一条线上排列了n个球。从左边起第i个球的颜色是ai。

Tenzing可以进行以下操作任意次:

选择i和j,使得1≤i<j≤|a|且ai=aj,
从数组中删除ai,ai+1,…,aj(并将所有元素的索引向右移动aj−i+1)。

Tenzing想知道他能够删除的最多的球数量。 输入格式

每个测试包含多个测试用例。第一行输入一个整数t(1≤t≤10^3)——测试用例的数量。接下来描述每个测试用例。

第一行包含一个整数n(1≤n≤2⋅10^5)——球的数量。

第二行包含n个整数a1,a2,…,an(1≤ai≤n)——球的颜色。

保证所有测试用例n的总和不超过2*10^5。 输出格式

对于每个测试用例,输出Tenzing可以删除的最大球数。 样例

Example

Input

Copy

 

2

5

1 2 2 3 3

4

1 2 1 2

Output

Copy

4
3

在第一个示例中,Tenzing将在第一次操作中选择i=2和j=3,使得a=[1,3,3]。然后Tenzing再次选择i=2和j=3,使得a=[1]。因此Tenzing总共可以删除4个球。

在第二个示例中,Tenzing将在唯一的操作中选择i=1和j=3,使得a=[2]。因此Tenzing总共可以删除3个球。

题解:

简单dp,转移方程

对于当前位置i,之前出现过a[i]的位置j

dp[i] = dp[i - 1] + i - j + 1;

但是转化为代码,好像题目并没有体现出这个式子

但是其实非常简单,只是转化了一些

dp[i] = i + (dp[i - 1] - (j - 1))

这行代码就代表后面这一部分(dp[i - 1] - (j - 1))

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
 #define int long long
typedef pair<int,int> PII;
typedef unsigned long long ULL;
const int N = 4e5 + 10;
int mod = 998244353;
void solve()
{
	int n;
	cin >> n;
	vector<int> dp(n + 10),mx(n + 10,-1e9),a(n + 10);
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	for(int i = 1;i <= n;i++)
	{
		dp[i] = dp[i - 1];
		dp[i] = max(dp[i],mx[a[i]] + i);
		mx[a[i]] = max(mx[a[i]],dp[i - 1] - (i - 1));
	}
	cout << dp[n] <<"\n";
}

signed main()
{
	ios::sync_with_stdio(0 );
	cin.tie(0);cout.tie(0);
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve(); 
	}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】基于FTP协议实现Linux与Windows文件传输

文章目录 前言(一) Linux FTP网络环境搭建1.安装ftp包2. 置匿名用户访问的FTP服务(最大权限)3.为匿名访问ftp的根目录下的pub子目录设置最大权限&#xff0c;以便匿名用户上传数据4. 开启服务&#xff0c;关闭防火墙和增强型安全功能 &#xff08;二&#xff09;Windows 设置测…

前端食堂技术周刊第 88 期:Svelte4、NestJS 10、State of CSS 2023、Vitest 1.0 Roadmap、Fresh 1.2

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;帝王蟹柳 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…

Insertion插入排序

原谅我接着偷懒&#xff0c;是真的没有什么写的内容了啊&#xff0c;好怀疑他们那些大佬是怎么那么多的文章和技术分享的&#xff0c;自闭中ing 最好情况的时间复杂度是 O(n)&#xff0c;最坏情况的时间复杂度是 O(n2)&#xff0c;然而时间复杂度这个指标看的是最坏的情况&…

Oracle 查询优化改写(第七章)

第七章 日志运算 1 加减年月日时分秒 替换为- --加减年月日时分秒 替换为- SELECT Add_Months(SYSDATE, 5 * 12) AS 加5年,Add_Months(SYSDATE, 5) AS 加5月&#xff0c;SYSDATE 5 AS 加5天,SYSDATE 5 / 24 AS 加5小时,SYSDATE 5 / 24 / 60 AS 加5分钟,SYSDATE 5 / 24 / …

【宝塔服务器】宝塔通过composer安装TP依赖

屡屡碰壁&#xff0c;安装一个项目&#xff0c;发现没有依赖&#xff0c;需要使用composer安装&#xff0c;没接触过&#xff0c;找了网上也没攻略&#xff0c;自己弄了后有以下问题&#xff0c;经过调整解决了&#xff1a; 报错1:没有安装fileinfo扩展 Loading composer rep…

Debian 安装gcc, g++

自从周日把刚把安装好的Debian12搞坏后&#xff0c;这两天一直在重装系统&#xff0c;就没有完全成功过&#xff0c;好在最后一次安装Debian11的时候&#xff0c;系统起来后有网络&#xff0c;但在安装桌面及GNOME时失败了&#xff0c;只能开机进入命令行模式。 安装gcc 和 g 只…

【VUE】ElementUI实现表格拖拽功能及行大图预览

一. 背景 elementui没自带的拖拽排序功能&#xff0c;所以需要借助第三方插件sortablejs 二. 步骤 安装 npm install sortablejs --save 引入 import Sortable from ‘sortablejs’ template文件应用 row-key填写唯一标识 id"dragTable"是为了通过document找到…

智能电网如何助力能源革命实现高效能源管理与分配?

能源革命是全球范围内的重要议题&#xff0c;为了实现可持续发展和应对能源挑战&#xff0c;人们对新的能源技术和能源管理方式寄予了厚望。智能电网作为能源革命的关键组成部分&#xff0c;利用先进的通信和信息技术&#xff0c;实现了高效能源管理与分配&#xff0c;为能源革…

MATLAB——信号处理仿真功能课程设计报告

目 录 摘 要... I 目 录. II 1 设计目的及内容. 1 1.1 课程设计目的. 1 1.2 课程设计内容. 1 2 课程设计基本原理. 3 2.1 基本信号. 3 2.2 计算原理. 3 3 设计与仿真. 4 3.1 基本信号. 4 3.2计算过程. 6 3.3 matlab仿真原理. 7 3.4 计算结果. 8 3.5结果…

Python-练脑系列-04依旧是数据结构

前言 &#x1f4cc;今天是Python的第四次练脑&#xff0c;本次题目为三题较为简单的题目 给定一个字典&#xff0c;其中键和值都是整数&#xff0c;找出字典中所有键和值的和为偶数的键值对&#xff0c;并返回结果的列表。给定一个字典和一个值&#xff0c;将字典中所有等于该值…

【软考网络管理员】2023年软考网管初级常见知识考点(22)- 交换机配置及命令

涉及知识点 华为交换机配置命令大全&#xff0c;交换机设备参数设置 &#xff0c; 交换机路由器的基本配置&#xff0c;交换机命令汇总 &#xff0c; VLAN 配置 &#xff0c; GVRP 配置 &#xff0c; STP 配置&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员…

OpenCV——总结《图像处理-3》形态学操作

1.开运算和腐蚀-膨胀是相同的&#xff0c;同理闭运算也是。 #一个开运算和腐蚀-膨胀的效果是相同的在这里进行对比 eroded cv2.erode(img,kernel) dilated cv2.dilate(eroded,kernel) cv2.imshow(Eroded-Swell Image,dilated)open cv2.morphologyEx(img,cv2.MORPH_OPEN,ker…

数据库锁全集

一、全局锁&#xff1a; 顾名思义&#xff0c;全局锁执行后&#xff0c;整个库都锁定。有读锁和写锁&#xff0c;加锁和解锁方式如下&#xff1a; 加锁&#xff1a;flush tables WITH READ LOCK&#xff1b; 解锁&#xff1a;UNLOCK TABLES; 使用场景&#xff1a;做全库的逻辑…

pycharm中Terminal输入sqlite3,出现无法将sqlite项识别为cmdlet**的解决方法

前提&#xff1a;本机上已安装sqlite3&#xff0c;安装详见&#xff1a;pycharm社区版中安装配置sqlite3_Sunshine_0426的博客-CSDN博客 问题&#xff1a; cmd命令行中或pycharm中Terminal行输入sqlite3 db.sqlite3命令后&#xff0c;出现“无法将“sqlite3”项识别为 cmdlet…

伦敦银实时行情最新解读

在伦敦银市场上做交易&#xff0c;不管大家做的是长线、中线还是短线&#xff0c;都离不开对最新的实时行情走势进行解读。借助交易软件上一些常用的技术指标&#xff0c;伦敦银投资者可以从技术面增加自己的交易操作准确率。 Stochastic是相当常见而实用的技术指标&#xff0c…

vue点击鼠标生成24字社会主义核心价值观上浮特效

在app.vue中 <template><div id"app"><transition name"el-zoom-in-top" mode"out-in"><keep-alive :include"cacheviews"><!-- 一级路由 --><router-view ></router-view></keep-aliv…

【杂谈】关于Huawei S5720巡检过程中的“CPCAR_DROP_MPU”告警

背景 本年度二季度为某客户巡检数通设备&#xff08;Huawei居多&#xff09;时&#xff0c;在某楼宇汇聚设备上display logbuffer发现存在大量告警&#xff0c;如下&#xff1a; Jun 8 2023 15:34:24 AGG-S5720-1 %%01INFO/4/SUPPRESS_LOG(l)[58]:Last message repeated 2 t…

chatgpt赋能python:Python获取某个值的方法

Python获取某个值的方法 在Python编程中&#xff0c;有时候我们需要从数据集或者对象中获取某个特定的值&#xff0c;这时候我们可以使用Python提供的各种方法来实现。本文将介绍几种常见的方法&#xff0c;并且说明它们的优劣和使用场景。 使用索引获取值 在Python中&#…

dirsearch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 介绍例如 安装使用场景01 XXX 介绍 dirsearch&#xff0c;是一个目录扫描工具&#xff0c;在目录扫描领域是一个强大的竞争对手&#xff0c;具有多线程、代理支持、…

MySQL数据库学习笔记一

MySQL优点 使用数据库&#xff1a; 使用show来显示存在的数据库、表、列 select语句 排序&#xff1a;Order by 降序排序&#xff1a; where语句 通配符&#xff1a;%&#xff0c;_ 正则表达式 正则表达式之 . 字符&#xff1a; Like和正则表达式regexp的区别 插入多行