Problem - 1335E2 - Codeforces

题目大意: 给定你长度为nnn的序列,让你将其分成三个子序列,满足如下关系[a,...,a⏟x,b,...,b⏟y,a,...,a⏟x][\underbrace{a,...,a }_{\text{x}}, \underbrace{b,...,b }_{\text{y}},\underbrace{a,...,a }_{\text{x}}][xa,...,a​​,yb,...,b​​,xa,...,a​​]。

解题思路:对于aia_iai​的值范围比较小,所以可以考虑用前缀和来维护区间上对应数字的个数,然后不断去枚举,因为对于给定的aia_iai​的值,左边一部分的aia_iai​个数一定需要等于右边一部分的aia_iai​个数,双指针不断向里面推进就可以,但是因为数据量比较大,如果单纯的暴力的话时间复杂度是O(200∗200∗n)O(200*200*n)O(200∗200∗n),所以对于每个aia_iai​,我们只存其对应的下标,这样可以确保每次双指针向内推进的时候都是有效值,这样摊还下来复杂度就降到了O(200∗n)O(200*n)O(200∗n).

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define syncfalse ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
const int N = 2e5+5;
int a[N],pre[N][205];
vector<int>id[205];
void solve(){int n;cin>>n;a[n+1]=0;for (int i = 1; i <= 200; ++i)id[i].clear();for (int i = 0; i <= n+1; ++i){for (int j = 0; j <= 200; ++j){pre[i][j]=0;}}for (int i = 1; i <= n; ++i){cin>>a[i];id[a[i]].push_back(i);}for (int i = 1; i <= n+1; ++i){for (int j = 1; j <= 200; ++j){pre[i][j]+=pre[i-1][j];if (a[i]==j)pre[i][j]++;}}int ans = 0;for (int i = 1; i <= 200; ++i){ans=max(ans, pre[n+1][i]-pre[0][i]);}for (int j = 1; j <= 200; ++j){int lid = 0, rid = id[j].size()-1,val=1;while(lid<rid){int l = id[j][lid], r=id[j][rid];for (int i = 1; i <= 200; ++i){int tem = pre[r-1][i]-pre[l][i];ans=max(ans, tem+2*val);}lid++,rid--;val++;}}cout << ans << "\n";
}int main(){syncfalse#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifint t;cin>>t;for (;t;--t){solve();}return 0;
}

Problem - 1335E2 - Codeforces(暴力+优化)相关推荐

  1. 暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和

    Problem describe 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0 ...

  2. 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)

    励志用少的代码做高效表达 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需 ...

  3. [Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]

    [问题描述][中等] 给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i.一对景点(i < j)组成的观光组合的得分为(A[i] + ...

  4. Problem - 1190B - Codeforces(分类讨论博弈)

    Problem - 1190B - Codeforces 题目大意:有nnn堆石子,每堆的数目为aia_iai​,现在Alice和Bob两个人可以移走任意一堆不为空的石子中的一颗石子,如果某人移动完石 ...

  5. 【树】B032_LC_ 二叉树中的伪回文路径(暴力 / 优化)

    一.Problem Given a binary tree where node values are digits from 1 to 9. A path in the binary tree is ...

  6. Codeforces Round #439 (Div. 2) Problem C (Codeforces 869C) - 组合数学

    - This is not playing but duty as allies of justice, Nii-chan! - Not allies but justice itself, Onii ...

  7. python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)

    题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a,b,求$ a \times b$. 输入格式 第一行一个正整数,表示 a: ...

  8. HDU 5445 Food Problem 多重背包+二进制优化

    据说也可以用单调队列优化多重背包,但是我不会,所以还是选择了二进制优化... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:先给n,m, ...

  9. 【CF868F】Yet Another Minimization Problem (决策单调性优化dp+分治)

    description 点击查看题目 solution code 设dpi,jdp_{i,j}dpi,j​:把前iii个数划分jjj段的最小花费,wi,jw_{i,j}wi,j​:[i,j][i,j] ...

最新文章

  1. Web测试介绍2一 安全测试
  2. “基础数学没用”,百年名校要裁撤数学系补贴AI研究,4000多学者联合抗议
  3. Jquery里live事件移除原因
  4. Java的代理模式之静态代理和动态代理
  5. android staticlayout使用讲解,可实现文本绘制换行处理
  6. python笔试题(1)
  7. 使用axios上传照片
  8. oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法
  9. 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程...
  10. java i%10==3_Java学习笔记(三)
  11. ArcGIS教程 - 8 空间数据拓扑处理
  12. widows下如何修改Visual Studio2017的字体颜色
  13. Redis 互联网开发必看
  14. 第 5 章 book / article
  15. oracle中rollback命令,9.2.4 执行ROLLBACK命令
  16. Chrome调试工具
  17. Composer的实用部分
  18. 恺撒密码python代码
  19. 烤仔说 | 两分钟制作属于你自己的 NFT(内附创作教程)
  20. Typora个人主题设置

热门文章

  1. KSO-C#语言2021年落选,Python获年度编程语言
  2. shell 编程三剑客之三:awk 详解
  3. 如何应对数千微服务组件带来的挑战?
  4. 新课改计算机论文,新课改论文
  5. NOJ 水獭看动漫 2001
  6. mysql 查询当月天数
  7. 简单枚举(ZJM要抵御宇宙射线)
  8. Alexa 账号注册的多种方法
  9. click和touchmove vue_移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法...
  10. ​stp文件转ply