当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...