【枚举】CF1660 D

Problem - 1660D - Codeforces

题意:

思路:

思路巨简单,代码也wa了很多发才过,都是因为细节....

很显然,要根据0分段处理

对于每一段,枚举去掉左边段还是右边段,左边段是 l 到第一个负数,右边段是最后一个负数到 r,看哪个大

比较的话不需要把区间积算出来,比较区间2的个数即可

如果区间积本来就是正数,那么直接取一整段即可

Code:

#include <bits/stdc++.h>using i64 = long long;constexpr int N = 2e5 + 10;
constexpr int M = 2e5 + 10;std::vector<std::array<int, 2> > V;int pl = 1, pr = 1;
int a[N], pre[N], pre2[N];int calc(int l, int r) {if(l == r && a[l] < 0) return -1e9;int cnt = pre[r] - pre[l - 1];if (cnt & 1) {int mx = 0, L = 0, R = 0;for (int i = l; i <= r; i ++) {if (a[i] < 0) {L = i;break;}}for (int i = r; i >= l; i --) {if (a[i] < 0) {R = i;break;}}if (pre2[r] - pre2[L + 1 - 1] > pre2[R - 1] - pre2[l - 1]) {pl = L + 1;pr = r;}else {pl = l;pr = R - 1;}mx = std::max(pre2[r] - pre2[L + 1 - 1], pre2[R - 1] - pre2[l - 1]);return mx;}else {pl = l, pr = r;return pre2[r] - pre2[l - 1];}
}
void solve() {V.clear();pl = 0, pr = 0;int n;std::cin >> n;for (int i = 0; i <= n + 5; i ++) {a[i] = pre[i] = pre2[i] = 0;}for (int i = 1; i <= n; i ++) {std::cin >> a[i];}if (n == 1) {if (a[1] > 0) {std::cout << "0 0" << "\n";}else {std::cout << "1 0" << "\n";}return;}for (int i = 1; i <= n; i ++) {pre[i] = pre[i - 1] + (a[i] < 0);pre2[i] = pre2[i - 1] + (abs(a[i]) == 2);}a[n + 1] = 0;int l = 1, r = 1;for (int i = 1; i <= n + 1; i ++) {if (a[i] == 0) {r = i - 1;if (l <= r) V.push_back({l, r});l = i + 1;}}int ans = -1e9, ansl = 0, ansr = 0;for (auto v : V) {if (ans < calc(v[0], v[1])) {ans = calc(v[0], v[1]);ansl = pl;ansr = pr;}}if (ansl == 0 && ansr == 0) std::cout << n << " " << 0 << "\n";else std::cout << ansl - 1 << " " << n - (ansr + 1) + 1 << "\n";
}
signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;std::cin >> t;while(t --) {solve();}return 0;
}

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

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

相关文章

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯 问题解决办法将引擎内插件拷贝到工程目录下修改插件代码蓝图接口使用 问题 Unreal Engine内嵌WebBrowser插件可以通过调用ExecuteJavascript接口执行js代码&#xff0c;但无法从JS调用Blueprint蓝图函数 解决办法 …

程序员必备的GitHub加速指南,真香!

不知道从什么时候我访问 github 就无法展示图片了&#xff0c;而且有时候&#xff08;尤其晚上&#xff09;打开网页速度极其滴慢,就问大家受不受的了吧&#xff1f;我反正是顶不住&#xff01; 所以连夜开发了个小工具&#xff0c;使用以后呀&#xff0c;不仅 github 页面打开…

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(UDP协议)

1、开始前的准备工作 关闭电脑防火墙连接开发板电源开发板与PC之间串口连接&#xff0c;JTAG下载线连接PC机与开发板间网线连接&#xff0c;并保证能ping通 2、Vivado端配置 创建工程&#xff0c;具体步骤不详细介绍&#xff0c;网上都有教程&#xff0c;器件型号按照实际用…

使用CUDA+OpenCV加速yolo v4性能

YOLO是You-Only-Look-Once的缩写&#xff0c;它无疑是根据COCO数据集训练的最好的对象检测器之一。YOLOv4是最新的迭代版本&#xff0c;它在准确性和性能之间进行了权衡&#xff0c;使其成为最先进的对象检测器之一。在智能视频分析管道中使用任何对象检测器的典型机制包括使用…

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)

前注&#xff1a;ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同&#xff0c;只是在ARM端的C代码实现不同&#xff0c;在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写&#xff0c;具体过程如下。 1、开始前的准备工作 关闭电脑防火墙连…

PSN下载加速相关程序教程(PS3.ProxyServer和PSN DM)

此文转自&#xff1a; http://bbs.duowan.com/thread-27759129-1-1.html 感谢星夜探索者的总结&#xff01; 前言&#xff1a; 哦嗨哟&#xff0c;用wifi的机友们一定发现&#xff0c;直接在线用wifi下东西太慢了&#xff0c;而大家也一定用过其他程序来加快psv的下载&#xff…

docker 镜像下载加速(安装 kubernetes 必备)

大佬的文章 https://blog.k8s.li/kubespray-tips.html https://fuckcloudnative.io/posts/docker-registry-proxy/ docker registry 可以通过设置 remoteurl 参数将其作为远端仓库的缓存仓库&#xff0c;这样当你通过这个私有仓库的地址拉取镜像时&#xff0c;regiistry 会…

《面试1v1》ElasticSearch倒排索引

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

Docker启动一个Centos镜像

搜索可用的centos的docker镜像 docker search <image>&#xff1a;在docker index中搜索imagedocker search centos 下载centos镜像&#xff08;拉取镜像&#xff09; docker pull centos:latest查看镜像docker images&#xff1a;列出imagesdocker images -a&#xff…

博途1200间的S7通讯

目录 S7通信 1.新建项目&#xff0c;硬件组态&#xff1b; 2.建立数据&#xff0c;取消优化。 3.PUT/GET指令 S7通信 仅西门子支持&#xff0c;西门子PLC间最常用、最简单的通信协议。通信时&#xff0c;需要在客户端侧调用PUT/GET指令。PUT指令用于将数据写入到伙伴CPU&#…

西门子PLC1200博途V16程序画面例程,具体项目工艺为制药厂生物发酵系统

西门子PLC1200博途V16程序画面例程&#xff0c;具体项目工艺为制药厂生物发酵系统&#xff0c;程序内有报警&#xff0c;模拟量标定处理&#xff0c;温度PID&#xff0c;称重仪表USS通讯和基本的各种数字量控制&#xff0c;硬件组成包含称重仪表通讯及和ET200SP模块通讯组态。 …

基于TIA博途平台西门子1200/1500PLC定时器时间格式转换运用编程

前景介绍&#xff1a; 平常我们编写程序的时候用到最多的指令也许就是定时器指令了&#xff0c;有时候我们需要通过人机界面修改定时器的设定时间。但是许多人机界面不支持西门子S5 TIME时间格式。怎么办呢&#xff1f;我们可以通过西门子库文件系统程序将整数转换为S5 TIME格…

发那科机器人协同作业程序,博途西门子1200搭配-威纶通触摸屏

发那科机器人协同作业程序&#xff0c;博途西门子1200搭配-威纶通触摸屏&#xff0c;真实项目&#xff0c;程序已经调试完毕&#xff0c;稳定运行。 程序特点&#xff1a; 1.含有机器人电脑可读源程序&#xff0c; 2.plc程序采用博途scl与梯形图混合编程&#xff0c;中文注解&…

「项目案例」使用西门子博途 SCL高级语言编写

此项目用博途 SCL高级语言编写如何开启运行时间最少的几台设备 需求&#xff1a; 如果客户共有8台水泵&#xff0c;4用4备&#xff0c;但每次启动设备时累计运行时需要最运行时间最短的4台运行。 解析&#xff1a; 如果使用梯形图来写的话&#xff0c;此程序会非常复杂&#xf…

西门子1500博途医药系统程序案例

西门子1500博途医药系统程序案例。 标准化编程 具体为医药制品&#xff0c;及空调恒温恒湿&#xff0c;PID控制博图程序&#xff0c;带昆仑流程图&#xff0c;西门子1500PLC和昆仑通态触摸屏上位软件&#xff0c;博图版本V16及以上。 适合研究学习标准程序设计。 ID:811668227…

TIA portal西门子博途安装时一直提示重启怎么办?

TIA portal西门子博途安装时一直提示重启怎么办? 在安装西门子的某些软件的时候,经常提示要重启,而且重启之后依然提示重启,让人比较烦恼,这个问题是由以下原因引起的: 一般系统文件无法删除时,比如其他程序正在占用等等,系统会把这些文件保存在注册表该减值下面,以便…

西门子1500PLC博途程序实例,大型程序fanuc机器人汽车焊装自动生产线程序,程序硬件结构包括1台西门子1500PLC程序,2台触摸屏TP1500程序

西门子1500PLC博途程序实例&#xff0c;大型程序fanuc机器人汽车焊装自动生产线程序&#xff0c;程序硬件结构包括1台西门子1500PLC程序&#xff0c;2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯…

TIA西门子博途软件中如何让程序段自动显示注释?

TIA西门子博途软件中如何让程序段自动显示注释&#xff1f; 1.打开TIA博途软件–项目视图&#xff0c;点击菜单栏中的“选项”–“设置” 2.进入到设置界面后&#xff0c;点击“PLC编程”–“常规”&#xff0c;勾选“显示程序段注释”&#xff08;with network comments&…

网络安全--awk总结

目录 一、谈谈我对awk的理解 二、常用命令总结 三、awk变量 四、举例说明 一、谈谈我对awk的理解 awk是一种用于文本处理和数据提取的命令行工具&#xff0c;它通过模式匹配和操作来处理输入数据并生成输出。 二、常用命令总结 -F fs&#xff1a;fs指定输入分隔符&#xf…

西门子PLc程序,博途V16 V17版1200与多台G120变频器通过过modbus RTU485 通讯控制,模拟量转

西门子PLc程序&#xff0c;博途V16 V17版1200与多台G120变频器通过过modbus RTU485 通讯控制&#xff0c;模拟量转换&#xff0c;温度转换&#xff0c;压力Pid控制&#xff0c;西门子KTP700 HMi 含电路图&#xff0c;G120变频器报文 ID:8615671795001402工控老玩童