CF1660D Maximum Product Strikes Back 题解
CF1660D Maximum Product Strikes Back 题解
- 题目描述
- 输入格式
- 输出格式
- 样例 #1
- 样例输入 #1
- 样例输出 #1
- 思路点拨(分类题)
- 缩小研究对象范围
- 除0的分析
- 加上0的分析
- 代码实现
- 小方法陈述
题目描述
你有一个长度为 n n n 的数组,每一个元素都在 − 2 -2 −2 到 2 2 2 的整数之间,当从数组首删去 x x x 个元素,从数组末删去 y y y 个元素时,数组剩下的乘积最大,输出 x x x 和 y y y 。
特别地,当存在多种情况时,输出任意一种即可; 当数组为空时,这个数组的乘积被认为是 1 1 1 。
输入格式
第一行包含一个正整数 t t t ( 1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1≤t≤104) —小测试点的总数
对于每个小测试点
第一行包含一个正整数 n n n ( 1 ≤ n ≤ 2 ⋅ 1 0 5 1 \le n \le 2 \cdot 10^5 1≤n≤2⋅105 ) — a a a数组的总长度 .
下一行包含 n n n 个正整数 a 1 , a 2 , … , a n a_1, a_2, \dots, a_n a1,a2,…,an ( − 2 ≤ ∣ a i ∣ ≤ 2 -2 \leq |a_i| \le 2 −2≤∣ai∣≤2 ) — a a a数组的每个元素 .
保证 ∑ n ≤ 2 ⋅ 1 0 5 \sum n \leq 2 \cdot 10^5 ∑n≤2⋅105 .
输出格式
对于每个测试点输出共一行,包含2个非负整数 x x x 和 y y y ( 0 ≤ x + y ≤ n 0 \le x + y \le n 0≤x+y≤n ) — 使数组乘积最大的操作
样例 #1
样例输入 #1
5
4
1 2 -1 2
3
1 1 -2
5
2 0 -2 2 -1
3
-2 -1 -1
3
-1 -2 -2
样例输出 #1
0 2
3 0
2 0
0 1
1 0
思路点拨(分类题)
缩小研究对象范围
题目中限定了 − 2 ≤ a i ≤ 2 且为整数 -2\leq a_i\leq 2且为整数 −2≤ai≤2且为整数限定了 a i a_i ai的值只能为 − 2 , − 1 , 0 , 1 , 2 -2,-1,0,1,2 −2,−1,0,1,2
除0的分析
假设没有 0 0 0的存在,应该怎么做?
非常容易发现删 1 1 1并不会对数组绝对值符号有任何优劣影响,删 − 1 -1 −1只会控制数组乘积的符号, 2 、 − 2 2、-2 2、−2才是对于数组绝对值起绝对性影响。
因此得出除0之外的分析结论:
- 若数组乘积为正,不用删任何数
- 若数组乘积为负,则在数组收尾 2 2 2边中选 ∣ a i ∣ = 2 较少的一边删除其所在前缀或后缀 |a_i|=2较少的一边删除其所在前缀或后缀 ∣ai∣=2较少的一边删除其所在前缀或后缀
加上0的分析
∵ \because ∵题目说明,若数组为空,默认乘积为 1 1 1,所以 0 0 0是坚决不能存在于数组之中,必须全部删除。
∴ \therefore ∴本题相当于拿 0 0 0做挡板,把原数组分为很多细分的除0的区间,只需要对这部分取 ∣ a i ∣ = 2 |a_i|=2 ∣ai∣=2较多的区间作为留下的数组即可
代码实现
#include<bits/stdc++.h>
using namespace std;const int maxn=2e5+10;
int t,n,cnt0,tot,ansl,ansr;
int a[maxn];
struct node{int u,v,dis;
}f[maxn];
//除0的情况
inline int solve(int l,int r){int num1=0,num2=0,mi2=maxn,mx2=0;for(int i=l;i<=r;i++){if(a[i]>0)++num1;else {++num2;mi2=min(mi2,i);mx2=i;}}if(num2%2==0){ansl=l-1;ansr=n-r;}else{int w1=0,w2=0;bool flag=false;for(int i=l;i<=mi2;i++){if(abs(a[i])==2)++w1;} for(int i=mx2;i<=r;i++){if(abs(a[i])==2)++w2;}if(w1>=w2){ansl=l-1;ansr=n-mx2+1;}else {ansl=mi2;ansr=n-r;}}int all=0;for(int i=ansl+1;i<=n-ansr;i++){if(abs(a[i])==2)++all;}return all;
}
inline bool cmp(node nx,node ny){return nx.dis>ny.dis;}
int main(){scanf("%d",&t); while(t--){cnt0=tot=0;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]==0)++cnt0;}if(cnt0==n){printf("%d 0\n",n);continue;}if(n==1){if(1>=a[1])printf("1 0\n");else printf("0 0\n");continue;}//有0的预处理分段+排序if(cnt0>0){int k=1,k1=n;while(a[k]==0)++k;while(a[k1]==0)--k1;int x=k,y=k;if(k==k1){f[++tot].u=x;f[tot].v=y;f[tot].dis=solve(f[tot].u,f[tot].v);f[tot].u=ansl;f[tot].v=ansr;}for(int i=k+1;i<=k1;i++){if(a[i-1]==0&&a[i]!=0)x=y=i;if(a[i]!=0&&a[i-1]!=0)++y;if(a[i]==0||i==k1){f[++tot].u=x;f[tot].v=y;f[tot].dis=solve(f[tot].u,f[tot].v);f[tot].u=ansl;f[tot].v=ansr;} }sort(f+1,f+tot+1,cmp);printf("%d %d\n",f[1].u,f[1].v);}else {int o=solve(1,n);printf("%d %d\n",ansl,ansr);}}return 0;
}
小方法陈述
- 应用背景:当CF的题目单测试点内的小测试点过多且单一,当某小测试点出现错误但因为省略隐藏,而不知道错误
实践:可以去骗测试点,发现问题,不断进行历史修补论的内容,直到最后 A C AC AC
相关文章:
CF1660D Maximum Product Strikes Back 题解
CF1660D Maximum Product Strikes Back 题解 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路点拨(分类题)缩小研究对象范围除0的分析加上0的分析 代码实现小方法陈述 题目描述 你有一个长度为 n n n 的数组,每一个元素都在 …...
基于CSSOM的暗链检测技术实现方案
什么是暗链 大部分的开源代码在实现暗链检测的时候都是直接判断页面里面有没有敏感词,如果有,就认为该链接为暗链。这种做法其实是有误的。 违规链接应该分为:外链、内链、死链和暗链。而暗链除了违规,还应该具备“暗”这个看不见的特征。 暗链的特征 其实“暗链”就是看…...
MySQL db、tables_priv、columns_priv和procs_priv权限表
在 MySQL 数据库中,权限表除了 user 表外,还有 db 表、tables_priv 表、columns_priv 表和 procs_priv 表。在《MySQL user权限表详解》中我们讲解了 MySQL 的 user 表,下面主要介绍其它几种权限表。 db表 db 表比较常用,是 MyS…...
JavaWeb-JSP的学习
JSP 今日目标: 理解 JSP 及 JSP 原理能在 JSP中使用 EL表达式 和 JSTL标签理解 MVC模式 和 三层架构能完成品牌数据的增删改查功能 1、JSP 概述 JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术…...
力扣sql中等篇练习(二十三)
力扣sql中等篇练习(二十三) 1 统计实验的数量 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 有可能数据本身就不全,就需要自行创建临时表 WITH T as (SELECT Android p1,Reading e1UNIONSELECT Android p1,Sports e1UNIONSELECT Android p1,Prog…...
C语言算法之查找
一.查找相关概念 这一部分解释数据结构里面查找的相关基础概念: 查找:在数据集合中寻找满足某种条件的数据元素的过程。查找表:用于查找的数据集合关键字:数据元素中唯一标识该元素的某个数据项的值静态查找表:静态查…...
肝一肝设计模式【九】-- 享元模式
系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…...
自动化测试的十大雷区【刚入门必看】
虽然从自己的错误中学习也不错,但从别人的错误中学习总是更好的。 作为一个自动化测试人员,分享常见的容易犯的10个错误,可以从中吸取教训,引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时&…...
【Android源码篇】用grep搜索源码内容关键词
前言 选项: • -w:只匹配整个单词,不会部分匹配 • -r:递归搜索 • -n:显示行号 • -i:忽略字符大小写 • -I(大写i):忽略二进制文件 • -I:忽略文件内容&am…...
腾讯云轻量应用服务器卡死怎么连接?
腾讯云轻量云服务器卡死怎么解决?使用腾讯云自带的VNC登录连接轻量服务器,或使用腾讯云OrcaTerm一键免密登录轻量实例。如果是确定数据没问题,也可以使用控制台自带的重启实例。 腾讯云轻量应用服务器参考:https://curl.qcloud.co…...
Charles安装及抓取APP接口
一、Charles使用 Charles是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,…...
Linux开发工具:yum和vim的使用
目录 一. Linux下的软件 1.1 软件安装的三种方法 1.2 采用yum安装软件 1.3 yum源的问题 二. vim开发工具的使用 2.1 vim的三种基本模式 2.2 命令模式下vim的常用指令 2.2.1 定位相关指令 2.2.2 光标移动相关指令 2.2.3 插入相关指令 2.2.4 复制粘贴相关指令 2.2.5 替…...
Java基础重温巩固
方法 方法与方法之间是平级关系,不能嵌套return表示结束当前方法 基本数据类型和引用数据类型 基本数据类型:数据存储在自己的空间中 引用数据类型:数据存储在其他空间中,自己空间存储的是地址值 值传递 传递基本数据类型时&…...
Text2SQL 语义解析数据集、解决方案和学术论文资源整合
目录 什么是Text2SQL? Text2SQL语义解析数据集 Text2SQL解决方案 Text2SQL相关学术论文 欢迎大家,我是你们的博主,今天我们来讨论一个非常有趣且有挑战性的话题 —— Text2SQL。这个话题涉及到自然语言处理 (NLP),数据库查询语言 (SQL)&…...
redis集群+哨兵配置实操宝典
本地安装redis 配置集群和哨兵 1、下载安装redis #wget http://download.redis.io/releases/redis-5.0.12.tar.gz #下载安装包 #yum -y install gcc #安装依赖包 #tar -zxvf redis-5.0.12.tar.gz #cd redis-5.0.12 #make 2、主备配置 我们采用一主两备的结构 主机 192.168.3.…...
nginx的语法
概览 Nginx是一个高效、稳定的开源Web服务器和反向代理服务器,也可以用作邮件代理服务器、负载均衡器和HTTP缓存。以下是Nginx配置文件的一些基本语法和组成部分: 配置块(Block Directives):Nginx配置文件由许多嵌套的…...
华为OD机试之英文输入法(Java源码)
英文输入法 题目描述 主管期望你来实现英文输入法单词联想功能。 需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列, 如果联想不到,请输出用户输入的单词…...
一个团队管理者应该干什么?
文章目录 一、前言二、搞好团队气氛三、上下都要处理好四、做好计划并监督执行,控制风险。五、小结 一、前言 话说管理这个东西是猪有猪的想法,狗有狗的想法。所以不会有一个定论,总是有人定义这个管理方式,那个管理方式。看的管…...
服务器数据库文件加载到 MySQL
要将数据库文件加载到 MySQL 中,您可以使用以下步骤: 1. 确保 MySQL 服务器正在运行。您可以使用以下命令检查 MySQL 服务器的状态: sudo systemctl status mariadb 如果 MySQL 服务器没有运行,请使用以下命令启动它&…...
6-《网络面试》
6-《网络面试》 1.http是什么?http的工作机制?http报文?1.1 http工作机制:1.2 URL和http报文 2. HTTP请求方法和状态码3.Get和Post的区别4.HTTP的Header解析1.text/html2.x-www-form-urlencoded3.multipart/form-data4.applicatio…...
用Python+海康MV-CH120-60UM相机实现条形码识别,从硬件连接到代码调试的完整避坑指南
Python海康MV-CH120-60UM工业相机条形码识别实战:从硬件配置到智能解码的完整解决方案 工业视觉领域的开发者们常常面临一个现实问题:如何快速将硬件设备与软件系统无缝对接?本文将以海康威视MV-CH120-60UM工业相机为例,手把手带你…...
如何3秒破解百度网盘提取码?终极免费工具使用指南
如何3秒破解百度网盘提取码?终极免费工具使用指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗?每次看到"请输入提取码"的提示,都要四…...
Agent-Sandbox UI 上线,来看看有哪些的功能是你经常使用的?汉
一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) {private readonly SqlSource _source new(builder.DataSource);private readonly IParamQuery _accountQuery build…...
深度解析:macOS微信防撤回插件WeChatIntercept的5个核心技术揭秘
深度解析:macOS微信防撤回插件WeChatIntercept的5个核心技术揭秘 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 作为…...
Phi-4-mini-reasoning与YOLOv5协同实战:图像描述生成与逻辑推理
Phi-4-mini-reasoning与YOLOv5协同实战:图像描述生成与逻辑推理 1. 效果亮点预览 当视觉识别遇上逻辑推理,会碰撞出怎样的火花?我们最近尝试了一个有趣的实验:用YOLOv5识别图片中的物体,再将识别结果输入Phi-4-mini-…...
如何快速解决Jellyfin媒体库元数据缺失问题:MetaShark插件完整指南
如何快速解决Jellyfin媒体库元数据缺失问题:MetaShark插件完整指南 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark Jellyfin作为一款开源的媒体服务器软件&…...
深夜告警炸裂?这份Linux故障排查“作战地图”请收好诺
先唠两句:参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜,它是菜单(资源路径)的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...
南航学位论文LaTeX模板:3分钟快速上手专业排版
南航学位论文LaTeX模板:3分钟快速上手专业排版 【免费下载链接】nuaathesis LaTeX document class for NUAA, supporting bachelor/master/PH.D thesis in Chinese/English/Japanese. 南航本科、硕士、博士学位论文 LaTeX 模板 项目地址: https://gitcode.com/gh_…...
如何高效下载漫画:comics-downloader 终极使用指南
如何高效下载漫画:comics-downloader 终极使用指南 【免费下载链接】comics-downloader tool to download comics and manga in pdf/epub/cbr/cbz from a website 项目地址: https://gitcode.com/gh_mirrors/co/comics-downloader comics-downloader 是一款专…...
Stable Diffusion XL 1.0开源模型新实践:灵感画廊GitHub仓库结构导读
Stable Diffusion XL 1.0开源模型新实践:灵感画廊GitHub仓库结构导读 1. 项目概览:当AI艺术遇见诗意交互 灵感画廊(Atelier of Light and Shadow)是一个基于Stable Diffusion XL 1.0打造的沉浸式艺术创作工具。与常见的工业化AI…...
