Problem - 1335E2 - Codeforces(暴力+优化)
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(暴力+优化)相关推荐
- 暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和
Problem describe 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0 ...
- 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)
励志用少的代码做高效表达 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需 ...
- [Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]
[问题描述][中等] 给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i.一对景点(i < j)组成的观光组合的得分为(A[i] + ...
- Problem - 1190B - Codeforces(分类讨论博弈)
Problem - 1190B - Codeforces 题目大意:有nnn堆石子,每堆的数目为aia_iai,现在Alice和Bob两个人可以移走任意一堆不为空的石子中的一颗石子,如果某人移动完石 ...
- 【树】B032_LC_ 二叉树中的伪回文路径(暴力 / 优化)
一.Problem Given a binary tree where node values are digits from 1 to 9. A path in the binary tree is ...
- 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 ...
- python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)
题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a,b,求$ a \times b$. 输入格式 第一行一个正整数,表示 a: ...
- HDU 5445 Food Problem 多重背包+二进制优化
据说也可以用单调队列优化多重背包,但是我不会,所以还是选择了二进制优化... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:先给n,m, ...
- 【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] ...
最新文章
- Web测试介绍2一 安全测试
- “基础数学没用”,百年名校要裁撤数学系补贴AI研究,4000多学者联合抗议
- Jquery里live事件移除原因
- Java的代理模式之静态代理和动态代理
- android staticlayout使用讲解,可实现文本绘制换行处理
- python笔试题(1)
- 使用axios上传照片
- oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法
- 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程...
- java i%10==3_Java学习笔记(三)
- ArcGIS教程 - 8 空间数据拓扑处理
- widows下如何修改Visual Studio2017的字体颜色
- Redis 互联网开发必看
- 第 5 章 book / article
- oracle中rollback命令,9.2.4 执行ROLLBACK命令
- Chrome调试工具
- Composer的实用部分
- 恺撒密码python代码
- 烤仔说 | 两分钟制作属于你自己的 NFT(内附创作教程)
- Typora个人主题设置
热门文章
- KSO-C#语言2021年落选,Python获年度编程语言
- shell 编程三剑客之三:awk 详解
- 如何应对数千微服务组件带来的挑战?
- 新课改计算机论文,新课改论文
- NOJ 水獭看动漫 2001
- mysql 查询当月天数
- 简单枚举(ZJM要抵御宇宙射线)
- Alexa 账号注册的多种方法
- click和touchmove vue_移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法...
- ​stp文件转ply