思路:

dp还是挺明显的,思路可以参考最长上升子序列

有点dp的感觉

\(f[i]\)表示考虑前\(i\)个数,的最大值

当前数有两种删或不删

不删:\(f[i]=f[i-1]\);

删:\(f[i]=max{f[j-1]+i-j+1}\)

这个转移是\(O(n^2)\)的显然时间上来不及

考虑优化,第一层循环一定是省不了的

考虑优化掉第二层循环

将j提出了\(f[i]=max{f[j-1]-j}+i+1\),f[j-1]-j是满足所有\(a[i]==a[j]\)中最大的,这个可以维护一下前缀最大值

#include <bits/stdc++.h>

#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define _for(i, a, b) for(int i=(a); i<(b); ++i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
#define vi vector<int>
#define inf -0x3f3f3f3f /*
* 有点dp的感觉
* f[i]表示考虑前i个数,的最大值
* 当前数有两种删或不删
* 不删:f[i]=f[i-1];
* 删:f[i]=max{f[j-1]+i-j+1}
* 这个转移是$O(n^2)$的显然时间上来不及
* 考虑优化,第一层循环一定是省不了的
* 考虑优化掉第二层循环
* 将j提出了$f[i]=max{f[j-1]-j}+i+1$,f[j-1]-j是满足所有a[i]==a[j]中最大的,这个可以维护一下前缀最大值
*/ using namespace std;
const int maxn = 2e5 + 10;
int f[maxn],a[maxn],sum[maxn];
vi p[maxn];
int n;
void solve() {
cin>>n;
rep(i,1,n){
f[i]=0;
sum[i]=inf;
}
rep(i,1,n){
cin>>a[i];
} //dp
//初始化0、1都无法去转移初始化为0
f[0]=f[1]=0;
rep(i,1,n){
int x=a[i];
f[i]=f[i-1];
//这样转移会tle需要优化
// rep(j,0,p[x].size()-1){
// if(p[x][j]==i) continue;
// f[i]=max(f[i],f[p[x][j]-1]+i-p[x][j]+1);
// }
f[i]=max(sum[x]+i,f[i]);
sum[x]=max(sum[x],f[i-1]-i+1);
}
cout<<f[n]<<endl;
} signed main() { ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// freopen("C:\\Users\\24283\\CLionProjects\\untitled2\\1.in", "r", stdin);
int _;
cin >> _;
while (_--)
solve();
return 0;
}

14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀最大值优化)的更多相关文章

  1. CF Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)

    1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort    暴力枚举,水 1.题意:n*m的数组, ...

  2. Codeforces Beta Round #27 (Codeforces format, Div. 2)

    Codeforces Beta Round #27 (Codeforces format, Div. 2) http://codeforces.com/contest/27 A #include< ...

  3. Codeforces 1023 A.Single Wildcard Pattern Matching-匹配字符 (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)

    Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A. Single Wildcard Patter ...

  4. Codeforces Round #438 (Div.1+Div.2) 总结

    本来兴致勃勃的想乘着这一次上紫,于是很早很早的到了机房 但是好像并没有什么用,反而rating-=47 Codeforces Round #438(Div.1+Div.2) 今天就这样匆匆的总结一下, ...

  5. [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)

    [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和) E. Permuta ...

  6. Codeforces Round #792 (Div. 1 + Div. 2) A-E

    Codeforces Round #792 (Div. 1 + Div. 2) A-E A 题目 https://codeforces.com/contest/1684/problem/A 题解 思路 ...

  7. Codeforces Round #792 (Div. 1 + Div. 2) // C ~ E

    比赛链接:Dashboard - Codeforces Round #792 (Div. 1 + Div. 2) - Codeforces C. Column Swapping 题意: 给定一个n*m ...

  8. Nebius Welcome Round (Div. 1 + Div. 2) 题解 A - D

    Nebius Welcome Round (Div. 1 + Div. 2) 题解 A - D,这四题的整体难度不大,都是过题人数上千的题. 很久没打Codeforces了,在此记录一篇题解,开学了也 ...

  9. 【codeforces】【比赛题解】#868 CF Round #438 (Div.1+Div.2)

    这次是Div.1+Div.2,所以有7题. 因为时间较早,而且正好赶上训练,所以机房开黑做. 然而我们都只做了3题.:(. 链接. [A]声控解锁 题意: Arkady的宠物狗Mu-mu有一只手机.它 ...

  10. Codeforces Round #857 Div.1/Div.2 CF1801/1802 2A~2F 题解

    点我看题(Div2) Div 2A. Likes 如果要赞最多,肯定是先放所有的点赞,再放所有移除的操作.如果要最少,那就先把赞分成两种:最后被移除的和没被移除的:最后先放所有被移除的,放一个移除一个 ...

随机推荐

  1. Docker 安装 MySQL8 数据库

    创建数据卷 mkdir -p /usr/mysql/conf /usr/mysql/data chmod -R 755 /usr/mysql/ 创建配置文件 vim /usr/mysql/conf/m ...

  2. 基于罪名法务智能知识图谱(含码源):基于280万罪名预测、20W法务问答与法律资讯问答功能

    基于罪名法务智能知识图谱(含码源):基于280万罪名预测.20W法务问答与法律资讯问答功能 项目功能 目前知识图谱在各个行业中应用逐步打开,尤其在金融,医疗,法律,旅游方面.知识图谱助力法律智能,能够 ...

  3. 7.3 通过API枚举进程

    首先实现枚举当前系统中所有进程信息,枚举该进程的核心点在于使用CreateToolhelp32Snapshot()函数,该函数用于创建系统进程和线程快照,它可以捕获当前系统中进程和线程相关的信息(如P ...

  4. Flask 框架:运用Axios库实现前后端交互

    Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规 ...

  5. 跑通的第一个ethers.js程序HelloVitalik.js

    简介 ethers.js是一个本地库,可以让你调用接口,用官方写好的轮子来使用一些常用的函数!学习完这个库,你对node.js就有比较深入的了解了,如果你不做项目,就不涉及智能合约的编写,那么写点脚本 ...

  6. .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和列配置 并发token 索引 Entity Framework Core:https: ...

  7. Flink-启动后无法访问WebUI界面(Flink1.16)

    问题描述 通过./bin/start-cluster.sh启动Flink程序,正常启动后无法通过浏览器访问web UI界面,http://192.168.80.133:8081. 问题原因 Flink ...

  8. 从零开始的react入门教程(九),react context上下文详解,可能有点啰嗦,但很想让你懂

    壹 ❀ 引 我在从零开始的react入门教程(八),redux起源与基础用法一文中,介绍了redux的前辈Flux,以及redux关于单项数据更新的基本用法.我们在前文提到,相对Flux支持多个sto ...

  9. NC51180 Accumulation Degree

    题目链接 题目 题目描述 Trees are an important component of the natural landscape because of their prevention o ...

  10. WPF仿win10加载动画 可用于loading加载

    直接上xaml 没有cs代码 (自己琢磨了好久感觉这样能接受) <UserControl x:Class="WpfApp1.Loading" xmlns="http ...