当前位置: 首页 > news >正文

atcoder abc372 启发式合并, dp

A delete

代码:

#include <bits.stdc++.h>using namespace std;int main() {string s;cin >> s;for(auto t: s) if(t != '.') cout << t;
}

B 3 ^ A

思路:三进制转换,可以参考二进制,先把当前可以加入的最大的3的幂次加入,这样一定可以凑出答案

代码:

#include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;vector<int> a;int tmp = n;while(tmp) {int l = 0, r = 10;while(l < r) {int mid = l + r + 1 >> 1;if(pow(3, mid) <= tmp) l = mid;else r = mid - 1;}tmp -= pow(3, l);a.push_back(l);}cout << a.size() << endl;for(auto t: a) cout << t << " ";return 0;
}

C Count ABC Again

思路:判断当前变化的位置对结果是否会产生影响,在询问前先计算有多少ABC, 每次变换位置x前后扫描一下[x - 2, x + 2]范围内是否有ABC,变换前有让cnt --, 变换后有让cnt ++

代码:

#include <bits/stdc++.h>
using namespace std;int main() {int n, q;cin >> n >> q;vector<char> s(n + 1);for(int i = 1; i <= n; i ++ ) cin >> s[i];int cnt = 0;for(int i = 3; i <= n; i ++ )if(s[i - 2] == 'A' && s[i - 1] == 'B' && s[i] == 'C')cnt ++;while(q -- ) {int x;char c;cin >> x >> c;string t;t += s[max(1, x - 2)];t += s[max(1, x - 1)];t += s[x];string t1;t1 += s[max(1, x - 1)];t1 += s[x];t1 += s[min(n, x + 1)];string t2;t2 += s[x];t2 += s[min(n, x + 1)];t2 += s[min(n, x + 2)];if(t1 == "ABC" || t2 == "ABC" || t == "ABC") cnt --;s[x] = c;t = s[max(1, x - 2)];t += s[max(1, x - 1)];t += s[x];t1 = s[max(1, x - 1)];t1 += s[x];t1 += s[min(n, x + 1)];t2 = s[x];t2 += s[min(n, x + 1)];t2 += s[min(n, x + 2)];if(t1 == "ABC" || t2 == "ABC" || t == "ABC") cnt ++;cout << cnt << "\n";}return 0;
}

D buildings

思路:首先对于每个点i,我们可以很容易用单调栈求出第一个大于该点的位置j,因此点i只有在(j + 1, i)这个区间内对答案有贡献, 这里可以用差分的方式计算贡献

代码:

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<int> a(n + 1);a[0] = 0x3f3f3f3f;for(int i = 1; i <= n; i ++ ) cin >> a[i];vector<int> pos(n + 1);stack<int> stk;stk.push(0);for(int i = 1; i <= n; i ++ ) {while(a[stk.top()] <= a[i]) stk.pop();pos[i] = stk.top();stk.push(i);}vector<int> ans(n + 1);for(int i = 1; i <= n; i ++ ) {ans[pos[i]] += 1;ans[i] -= 1;}for(int i = 1; i <= n; i ++ ) {ans[i] += ans[i - 1];cout << ans[i] << " ";}return 0;
}

E K-th Largest Connected Components

思路:注意到k很小,因此在查询的时候可以直接遍历。现在考虑如何存数据。可以用并查集合并两个集合,并且在合并的时候一定要将小的集合合并到大的集合中去,因为小集合合并到大集合中,最后的集合一定大于小集合元素数量的两倍,因此合并的时间复杂度不会超过logn

代码:
 

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;struct node {int num;priority_queue<int> q;/*bool operator += (node W) const {while(!W.q.empty()) {q.push(W.q.top());W.q.pop();}}*/
}_size[N];
int p[N];int find(int x) {if(x != p[x]) {p[x] = find(p[x]);}   return p[x];
}int main() {int n, q;cin >> n >> q;for(int i = 1; i <= n; i ++ ) {p[i] = i;_size[i].num = 1;_size[i].q.push(i);}while(q -- ) {int op;cin >> op;if(op == 1) {int u, v;cin >> u >> v;int pu = find(u);int pv = find(v);if(pu != pv) {if(_size[pu].num >= _size[pv].num){while(!_size[pv].q.empty()) {_size[pu].q.push(_size[pv].q.top());_size[pv].q.pop();}_size[pu].num += _size[pv].num;p[pv] = pu;} else {while(!_size[pu].q.empty()) {_size[pv].q.push(_size[pu].q.top());_size[pu].q.pop();}_size[pv].num += _size[pu].num;p[pu] = pv;}}} else {int k, v;cin >> v >> k;auto q1 = _size[find(v)].q;for(int i = 1; i <= k - 1 && !q1.empty(); i ++ ) {q1.pop();}if(!q1.empty()) cout << q1.top() << endl;else cout << -1 << endl;}}return 0;
}
/*
2
1
-1
4
2
-1
*/

这里留下个疑问

int k, v;cin >> v >> k;auto q1 = _size[find(v)].q;for(int i = 1; i <= k - 1 && !q1.empty(); i ++ ) {q1.pop();}if(!q1.empty()) cout << q1.top() << endl;else cout << -1 << endl;

为什么在查询时直接查询_size[p[v]]答案会出错,是路径压缩不彻底的原因吗

相关文章:

atcoder abc372 启发式合并, dp

A delete 代码&#xff1a; #include <bits.stdc.h>using namespace std;int main() {string s;cin >> s;for(auto t: s) if(t ! .) cout << t; } B 3 ^ A 思路&#xff1a;三进制转换&#xff0c;可以参考二进制&#xff0c;先把当前可以加入的最大的3的…...

CentOS Stream 9部署MariaDB

1、更新系统软件包 sudo dnf update 2、安装MariaDB软件包&#xff08;替代mysql&#xff09; sudo dnf install mariadb-server 3、安装MariaDB服务 sudo systemctl enable --now mariadb 4、检查MariaDB服务状态 sudo systemctl status mariadb 5、配置MariaDB安全性 sudo my…...

【Leetcode:997. 找到小镇的法官 + 入度出度】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器

文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、​​​​​​创建session集群 三、源表查询 四、​​​​​窗口计算 五、​​​​​​结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…...

SYN Flood攻击原理,SYN Cookie算法

SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止&#xff0c;能够有效防范SYN Flood攻击的手段并不多&#xff0c;SYN Cookie就是其中最著名的一种。 1. SYN Flood攻击原理 SYN Flood攻击是一种典型的拒绝服务(Denial of Service)攻击。所谓的拒绝服务攻击就是通过进…...

计组(蒋)期末速成笔记1

蒋本珊计组期末不挂科复习笔记 第1章 概论 第2章 数据的机器层次表示 第3章 指令系统 第4章 数值的机器运算 第5章 存储系统和结构 第6章 中央处理器 第7章 总线 第1章 概论 蒋本珊计组期末不挂科复习笔记知道你快考试了&#xff0c;莫慌&#xff01; 第1章 概论1.1 冯诺依曼计…...

mysql学习教程,从入门到精通,SQL 更新数据(UPDATE 语句)(17)

1、SQL 更新数据&#xff08;UPDATE 语句&#xff09; SQL UPDATE 需要指定要更新的表、要修改的列以及新值&#xff0c;并且通常会通过WHERE子句来指定哪些行需要被更新。下面是一个简单的示例&#xff0c;说明如何使用UPDATE语句。 假设我们有一个名为employees的表&#xf…...

【吊打面试官系列-MySQL面试题】MyISAM 表格将在哪里存储,并且还提供其存储格式?

大家好&#xff0c;我是锋哥。今天分享关于【MyISAM 表格将在哪里存储&#xff0c;并且还提供其存储格式&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; MyISAM 表格将在哪里存储&#xff0c;并且还提供其存储格式&#xff1f; 每个 MyISAM 表格以三种格式存储…...

常用的图像增强的算法之间的联系和区别

Unsharp Mask (USM)、拉普拉斯算子、直方图均衡化和伽马增强是图像处理中常见的技术&#xff0c;但它们在原理、作用和应用场景上有显著不同。以下是对这些方法的详细比较&#xff1a; 1. Unsharp Mask (USM) 原理&#xff1a;USM 是通过对图像进行模糊处理&#xff08;如高斯…...

SpringBoot+Vue考试系统免费分享

源码说明&#xff1a; 这是一个开源的SpringBoot与Vue开发的在线考试系统。经过站长测试&#xff0c;系统稳定可用&#xff0c;允许重复考试。 环境&#xff1a; 需要安装的环境包括Node.js v14.21.3、JDK8、Maven以及MySQL 5.7。 前端部署教程&#xff1a; 执行 npm inst…...

音视频入门基础:FLV专题(1)——FLV官方文档下载

一、FLV简介 Flash Video&#xff08;简称FLV&#xff09;&#xff0c;是一种网络视频格式&#xff0c;用作流媒体格式&#xff0c;它的出现有效地解决了视频文件导入Flash后&#xff0c;使导出的SWF文件体积庞大&#xff0c;不能在网络上有效使用等缺点。 一般FLV文件包在SW…...

使用c#制作一个小型桌面程序

封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表&#xff08;如果没有可以参考visual stdio 如何配置opencv等其他环境&#xff09; 创建完成后 系统会自动生成一些文件&#xff0c;其中 pch.cpp 先不要修改&#xff0c;pch.h中先导入自己需…...

Clip studio paint百度云下载:附安装包+教程

首先补一个介绍&#xff0c;Clip Studio Paint&#xff08;即CSP&#xff09;&#xff1a;这是一款专业的绘画和漫画创作软件&#xff0c;拥有丰富的绘画工具&#xff0c;适合漫画创作者使用。其界面友好&#xff0c;工具齐全&#xff0c;能够满足漫画创作中的各种需求。 用过…...

从Yargs源码学习中间件的设计

yargs中间件介绍 yargs 是一个用于解析命令行参数的流行库&#xff0c;它能帮助开发者轻松地定义 CLI&#xff08;命令行接口&#xff09;&#xff0c;并提供参数处理、命令组织、help文本自动生成等功能。今天我们来学习一下它对中间件的支持。 中间件的API详细信息&#xff0…...

高级I/O知识分享【epoll || Reactor ET,LT模式】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;接口 epo…...

Matlab 的.m 文件批量转成py文件

在工作中碰到了一个问题&#xff0c;需要将原来用matlab gui做出来的程序改为python程序&#xff0c;因为涉及到很多文件&#xff0c;所以在网上搜了搜有没有直接能转化的库。参考了【Matlab】一键Matlab代码转python代码详细教程_matlab2python-CSDN博客 这位博主提到的matla…...

【软考】传输层协议TCP与UDP

目录 1. TCP1.1 说明1.2 三次握手 2. UDP3. 例题3.1 例题1 1. TCP 1.1 说明 1.TCP(Transmission Control Protocol&#xff0c;传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的…...

Arthas dashboard(当前系统的实时数据面板)

文章目录 二、命令列表2.1 jvm相关命令2.1.1 dashboard&#xff08;当前系统的实时数据面板&#xff09; 二、命令列表 2.1 jvm相关命令 2.1.1 dashboard&#xff08;当前系统的实时数据面板&#xff09; 使用场景&#xff1a; 在 Arthas 中&#xff0c;dashboard 命令用于提…...

微服务保护之熔断降级

在微服务架构中&#xff0c;服务之间的调用是通过网络进行的&#xff0c;网络的不确定性和依赖服务的不可控性&#xff0c;可能导致某个服务出现异常或性能问题&#xff0c;进而引发整个系统的故障&#xff0c;这被称为 微服务雪崩。为了防止这种情况发生&#xff0c;常用的一些…...

TomCat乱码问题

TomCat控制台乱码问题 乱码问题解决&#xff1a; 响应乱码问题 向客户端响应数据&#xff1a; package Servlet;import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servl…...

Kerberos身份认证原理与实战排错指南

1. 为什么今天还要花时间搞懂 Kerberos&#xff1f;——一个被低估的“老协议”正在悄悄支撑着你的日常你每天登录公司内网查邮件、访问财务系统提交报销、用 Jenkins 构建代码、甚至在 Windows 域环境中打开一台同事的共享文件夹……这些看似顺滑的操作背后&#xff0c;大概率…...

UOS系统下WPS卸载不干净?手把手教你用命令行精准清理(附dpkg/apt组合拳)

UOS系统下WPS卸载不干净&#xff1f;手把手教你用命令行精准清理 在UOS系统日常使用中&#xff0c;WPS Office作为常用办公软件&#xff0c;有时因版本更新或功能调整需要彻底卸载。但不少用户发现&#xff0c;通过图形界面或简单命令卸载后&#xff0c;系统中仍残留配置文件、…...

13456

12356...

ESP32多任务水位监测:从Arduino到ESP-IDF的FreeRTOS实战

1. 项目概述&#xff1a;从Arduino到ESP-IDF的跃迁去年我在做毕业设计时&#xff0c;为了搭建一个ESP32的传感器节点演示程序&#xff0c;第一次深入使用了FreeRTOS。那段时间&#xff0c;我几乎天天和任务调度、队列、信号量打交道&#xff0c;从最初的一头雾水到后来能流畅地…...

账务台账数据

银行里说的 “账务台账数据”&#xff0c;本质就是按会计规则把每笔业务逐笔、分户、分科目记下来的完整明细流水 余额 辅助信息&#xff0c;核心是 “可逐笔追溯、可对账、可审计” 的一套明细数据。下面用通俗、具体的方式拆开说&#xff1a;一、银行 “账务台账” 到底是什…...

MeloTTS实战指南:解决多语言TTS部署中的核心挑战

MeloTTS实战指南&#xff1a;解决多语言TTS部署中的核心挑战 【免费下载链接】MeloTTS High-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean. 项目地址: https://gitcode.com/GitHub_Trendin…...

AhMyth位置跟踪:GPS定位与地理围栏技术深度解析

AhMyth位置跟踪&#xff1a;GPS定位与地理围栏技术深度解析 【免费下载链接】AhMyth Cross-Platform Android Remote Administration Tool | The only maintained version of AhMyth on github | A revival of the original repository at https://GitHub.com/AhMyth/AhMyth-An…...

网安学习第24天 PHP安全——PHP反序列化

一、序列化与反序列化 1、序列化serialize() 序列化是什么&#xff1f;序列化就是把程序中的对象、数组、结构体等复杂数据&#xff0c;转换成可以存储或传输的格式。 简单说&#xff1a; 把“内存里的对象”变成“字符串/字节流”。 例如 PHP 中有一个对象&#xff1a; $u…...

Fiddler手机断网真相:TLS握手与证书固定的协议级拦截

1. 为什么Fiddler一开&#xff0c;手机就断网&#xff1f;这不是配置问题&#xff0c;是协议层的“信任危机”Fiddler抓包手机流量&#xff0c;本该是移动开发、测试、安全分析中最基础的操作之一。但几乎每个刚上手的人&#xff0c;都会在第二天早上发现&#xff1a;手机Wi-Fi…...

自动加字幕软件推荐:口播视频如何批量加字幕过

口播视频加字幕&#xff0c;为什么越做越累&#xff1f;一位知识类博主连续两周日更3条口播视频&#xff0c;每条12–18分钟&#xff0c;需手动校对字幕、拆分金句切片、补气口停顿、匹配背景音乐——最后一条视频发布时&#xff0c;字幕错漏率达17%&#xff0c;平台审核未过。…...