23.7.31 牛客暑期多校5部分题解
E - Red and Blue and Green
题目大意
构造一个长度为 n n n 的序列,满足 m m m 个条件,每个条件包含三个数 l , r , w l,\space r,\space w l, r, w,表示区间左端点,区间右端点,这个区间的逆序对数的奇偶性,保证两个区间包含或者不相交
解题思路
因为区间两两非包含即相交,可以搞出来一棵树的样子,那么遍历区间直接变成遍历树
对于每个遍历的区间,在下方所有区间都满足的情况下,下一级区间奇偶性异或和如果相等则什么操作都不用
如果不相等,那么可以尝试是否能将其分为两个互不相干的区间
可以的话只要将去和把前者的区间的最大值和后者区间的最小值交换即可
上述操作可以将区间的逆序对数增加 1 1 1(因为两者之间的数都比两者小),使奇偶性改变
code
#include<bits/stdc++.h>
using namespace std;
const int N = 1009;
struct lol {int l, r, w;} h[N];
struct dot {int x, y;} e[N];
bool cmp(lol a, lol b) {return a.l < b.l || (a.l == b.l && a.r > b.r);}
int n, m, a[N], top[N], ans, v[N];
stack <int> st;
void ein(int x, int y)
{e[++ ans].x = top[x];e[ans].y = y;top[x] = ans;
}
void dfs(int x)
{v[x] = 1;int op = 0, fl = 0, nl = h[x].l, nr = h[x].r;for (int i = top[x]; i; i = e[i].x){int y = e[i].y;nl = max(nl, h[y].l);nr = min(nr, h[y].r);op ^= h[y].w;fl = 1;}if (op != h[x].w){if (fl == 0 && nl != nr) {swap(a[nl], a[nl + 1]);}else if (nl > h[x].l) {swap(a[nl], a[nl - 1]);}else if (nr < h[x].r) {swap(a[nr], a[nr + 1]);}else {printf("-1"); exit(0);}}for (int i = top[x]; i; i = e[i].x){int y = e[i].y;dfs(y);}
}
int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= m; ++ i)scanf("%d%d%d", &h[i].l, &h[i].r, &h[i].w);sort(h + 1, h + m + 1, cmp);for (int i = 1; i <= m; ++ i){while (!st.empty() && h[st.top()].r < h[i].r) st.pop();if (!st.empty()) ein(st.top(), i);st.push(i);}for (int i = 1; i <= n; ++ i) a[i] = i;for (int i = 1; i <= m; ++ i)if (!v[i]) dfs(i);for (int i = 1; i <= n; ++ i) printf("%d ", a[i]);return 0;
}
B - Circle of Mistery
题目大意
有一个长度为 n n n 的数列 { a i } \{a_i\} {ai},可以进行连边操作,使第 i i i 个数指向 p i p_i pi,这样操作会形成若干个环,要使存在一个环的 a i a_i ai 之和大于等于 k k k,问如何设计 p i p_i pi 才能使其逆序对数最少,输出最少的逆序对数或不可行
解题思路
当 k ≤ 0 k\le0 k≤0 时,只要找有没有比它大的数即可
当 k > 0 k>0 k>0 时,先进行规律寻找
发现你要求出来的最优解一定是找一个区间形成一个环并且选择去掉其中一些负数
逆序对数是区间长度减 1 1 1 再加上去掉的数的个数
假设先把左端点确定去枚举右端点,并用优先队列存其中的负数方便处理
如果维护的区间和大于等于 k k k,可以从优加入去掉的负数(绝对值小的优先)
如果维护的区间和小于 k k k,可以将其中的负数从优去掉(绝对值大的优先)
如果负数加多了就回退一个,如果和不够就继续枚举下一位
在上述过程中维护顺带维护答案并在合法情况下求最小值即可
code
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 9;
const int INF = 1e9;
int n, k, ans, a[N];
priority_queue <int> q, q1;
//q大根堆取负以维护小根堆,记录在答案中的负数,q1维护剔除的负数
int main() {scanf("%d%d", &n, &k); ans = INF;for (int i = 1; i <= n; ++ i)scanf("%d", &a[i]);for (int i = 1; i <= n; ++ i) {int cnt = 0, tmp = -1, num = 0;while (!q.empty()) q.pop();while (!q1.empty()) q1.pop();for (int j = i; j <= n; ++ j) {++ tmp; ++ cnt; num += a[j];//tmp为维护的答案,cnt为在此答案用的数的个数if (a[j] < 0) q.push(-a[j]);while (!q1.empty() && num + q1.top() >= k)//两个顺序不能反,这样才能保证维护合法方案q.push(-q1.top()), num += q1.top(), q1.pop(), -- tmp, ++ cnt;while (!q.empty() && num < k)q1.push(-q.top()), num += q.top(), q.pop(), ++ tmp, -- cnt;if (num >= k && cnt) ans = min(ans, tmp);//要确定当前区间和大于等于k并且有数在答案中,将k<=0的情况一同处理}}printf("%d", ans == INF ? -1 : ans);return 0;
}
相关文章:
23.7.31 牛客暑期多校5部分题解
E - Red and Blue and Green 题目大意 构造一个长度为 n n n 的序列,满足 m m m 个条件,每个条件包含三个数 l , r , w l,\space r,\space w l, r, w,表示区间左端点,区间右端点,这个区间的逆序对数的奇偶性&…...

Python爬虫的学习day02 requests 模块post 函数, lmxl 模块的 etree 模块
1. requests 模块post 函数 1.1 post 函数的参数 (简单版) 参数1: url 网络地址 参数2: data 请求数据 (一般数据是 账号,密码) 参数3: headers 头请求 (…...

客户流失分析预测案例 -- 机器学习项目基础篇(7)
客户流失 它是指现有的客户、用户、订阅者或任何类型的回头客停止与公司开展业务或结束与公司的关系。 客户流失的类型 合同客户流失:当客户签订了服务合同并决定取消服务时,例如有线电视,SaaS。自愿流失:当用户自愿取消服务时…...
uniapp中我使用uni.navigateTo跳转webview页面传参,但是接收的参数只有一半。
在uniapp中使用uni.navigateTo跳转webview页面传参时,可能会遇到接收的参数只有一半的情况。这可能是因为在跳转时,url的长度超过了限制。为了解决这个问题,可以使用encodeURIComponent和decodeURIComponent进行编码和解码。 具体的解决办法…...
使用kaminari,在列表页实现分页功能
安装 1. bundller 大于1的话,可以使用这个版本 gem install kaminari -v 0.16.3 或者 gem kaminari 2. 使用命令: $ bundle install 3. 然后使用这个命令可以创建一个config文件 $ rails g kaminari:config 4. 重新启动服务器 bundle exec rail…...

Android 性能调优之bitmap的优化
背景 Android开发中,加载图片过多、过大很容易引起OutOfMemoryError异常,即我们常见的内存溢出。因为Android对单个应用施加内存限制,默认分配的内存只有几M(具体视不同系统而定)。而载入的图片如果是JPG之类的压缩格…...
HOT74-数组中的第K个最大元素
leetcode原题链接:数组中的第K个最大元素 题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O…...

类与对象【中】
欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析2 目录 👉🏻类的默认6个成员函数👉🏻构造…...

uni-app:实现列表单选功能
效果图: 核心解析: 一、 <view class"item_all" v-for"(item, index) in info" :key"index"><view classposition parameter-info text-over :classitem.checked?"checked_parameter":""…...

vue中axios二次封装并发起网络请求配置
1.安装axios npm i axios 2.导入 //对axios进行二次封装 import axios from "axios"// 创建axios实例,其实request就是axiosconst requests axios.create({// 发请求的时候自动出现api// baseURL:"api",// 请求超时的时间timeout:5000, })…...
开源全文搜索引擎汇总
1、Apache Lucene Java 全文搜索框架 许可证:Apache-2.0 开发语言:Java 官网:https://lucene.apache.org/。Apache Lucene 是完全用 Java 编写的高性能、功能齐全的全文检索引擎架构,提供了完整的查询引擎和索引引擎、部分文本分析引擎。目的是为软件开发人员提供一个简单…...

gitlab CI/CD 安装 gitlab runner
一、为什么需要安装gitlab runner ? 极狐GitLab Runner 极狐GitLab Runner 是在流水线中运行作业的应用,与极狐GitLab CI/CD 配合运作。 说白了就是你部署的一个agent。 二、如何安装? 1.介绍通过helm部署github runner 2.helm添加仓库 h…...

服务器中了malox勒索病毒后怎么办怎么解决,malox勒索病毒解密数据恢复
服务器遭受Malox勒索病毒攻击后,快速解密并恢复数据至关重要,以便减少更大的经济损失。近期,新的一波malox勒索病毒正在肆虐,我们收到很多企业的求助,企业的服务器数据库遭到了malox勒索病毒攻击,导致系统内…...

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)
目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…...

word转pdf两种方式(免费+收费)
一、免费方式 优点:1、免费;2、在众多免费中挑选出的转换效果相对较好,并且不用像openOffice那样安装服务 缺点:1、对字体支持没有很好,需要安装字体库或者使用宋体(对宋体支持很好)2、对于使…...

基于图像形态学处理的目标几何形状检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................... %二进制化图像 Images_bin imbinari…...
python系列教程211——map
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow 声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享…...

SW - 3D打印件最好带上浮雕文字标记
文章目录 SW - 3D打印件最好带上浮雕文字标记概述笔记END SW - 3D打印件最好带上浮雕文字标记 概述 做了一些散料飞达的压板, 下了3D打印的单. 一共有10种压板, 每种压板做的数量不等.压板分为2个大的类(中间压板, 边上的压板), 每个类中分了5个子类, 子类之间只是一个高度方…...
Kafka-副本数量设置
1. ISR副本数量设置 指的是存活的副本数量 ISR 机制的另外一个相关参数是 min.insync.replicas , 可以在 broker 或者主题级别进行配置,代表 ISR 列表中至少要有几个可用副本。这里假设设置为 2,那么当可用副本数量小于该值时,就认为整个分…...

解决github打不开的方法
解决github打不开的方法 本文参考文章:解决可ping通但无法访问github网站的问题 一、确定域名github.com的ip地址 进入网址 IP/服务器github.com的信息 - 站长工具 (chinaz.com),查看 ip 地址。 20.205.243.166 github.com二、确定域名github.global.…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...