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]]答案会出错,是路径压缩不彻底的原因吗
F
相关文章:
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的…...
CentOS Stream 9部署MariaDB
1、更新系统软件包 sudo dnf update 2、安装MariaDB软件包(替代mysql) sudo dnf install mariadb-server 3、安装MariaDB服务 sudo systemctl enable --now mariadb 4、检查MariaDB服务状态 sudo systemctl status mariadb 5、配置MariaDB安全性 sudo my…...
【Leetcode:997. 找到小镇的法官 + 入度出度】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
大数据Flink(一百二十三):五分钟上手Flink MySQL连接器
文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、创建session集群 三、源表查询 四、窗口计算 五、结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…...
SYN Flood攻击原理,SYN Cookie算法
SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。 1. SYN Flood攻击原理 SYN Flood攻击是一种典型的拒绝服务(Denial of Service)攻击。所谓的拒绝服务攻击就是通过进…...
计组(蒋)期末速成笔记1
蒋本珊计组期末不挂科复习笔记 第1章 概论 第2章 数据的机器层次表示 第3章 指令系统 第4章 数值的机器运算 第5章 存储系统和结构 第6章 中央处理器 第7章 总线 第1章 概论 蒋本珊计组期末不挂科复习笔记知道你快考试了,莫慌! 第1章 概论1.1 冯诺依曼计…...
mysql学习教程,从入门到精通,SQL 更新数据(UPDATE 语句)(17)
1、SQL 更新数据(UPDATE 语句) SQL UPDATE 需要指定要更新的表、要修改的列以及新值,并且通常会通过WHERE子句来指定哪些行需要被更新。下面是一个简单的示例,说明如何使用UPDATE语句。 假设我们有一个名为employees的表…...
【吊打面试官系列-MySQL面试题】MyISAM 表格将在哪里存储,并且还提供其存储格式?
大家好,我是锋哥。今天分享关于【MyISAM 表格将在哪里存储,并且还提供其存储格式?】面试题,希望对大家有帮助; MyISAM 表格将在哪里存储,并且还提供其存储格式? 每个 MyISAM 表格以三种格式存储…...
常用的图像增强的算法之间的联系和区别
Unsharp Mask (USM)、拉普拉斯算子、直方图均衡化和伽马增强是图像处理中常见的技术,但它们在原理、作用和应用场景上有显著不同。以下是对这些方法的详细比较: 1. Unsharp Mask (USM) 原理:USM 是通过对图像进行模糊处理(如高斯…...
SpringBoot+Vue考试系统免费分享
源码说明: 这是一个开源的SpringBoot与Vue开发的在线考试系统。经过站长测试,系统稳定可用,允许重复考试。 环境: 需要安装的环境包括Node.js v14.21.3、JDK8、Maven以及MySQL 5.7。 前端部署教程: 执行 npm inst…...
音视频入门基础:FLV专题(1)——FLV官方文档下载
一、FLV简介 Flash Video(简称FLV),是一种网络视频格式,用作流媒体格式,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上有效使用等缺点。 一般FLV文件包在SW…...
使用c#制作一个小型桌面程序
封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表(如果没有可以参考visual stdio 如何配置opencv等其他环境) 创建完成后 系统会自动生成一些文件,其中 pch.cpp 先不要修改,pch.h中先导入自己需…...
Clip studio paint百度云下载:附安装包+教程
首先补一个介绍,Clip Studio Paint(即CSP):这是一款专业的绘画和漫画创作软件,拥有丰富的绘画工具,适合漫画创作者使用。其界面友好,工具齐全,能够满足漫画创作中的各种需求。 用过…...
从Yargs源码学习中间件的设计
yargs中间件介绍 yargs 是一个用于解析命令行参数的流行库,它能帮助开发者轻松地定义 CLI(命令行接口),并提供参数处理、命令组织、help文本自动生成等功能。今天我们来学习一下它对中间件的支持。 中间件的API详细信息࿰…...
高级I/O知识分享【epoll || Reactor ET,LT模式】
博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,接口 epo…...
Matlab 的.m 文件批量转成py文件
在工作中碰到了一个问题,需要将原来用matlab gui做出来的程序改为python程序,因为涉及到很多文件,所以在网上搜了搜有没有直接能转化的库。参考了【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,传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的…...
Arthas dashboard(当前系统的实时数据面板)
文章目录 二、命令列表2.1 jvm相关命令2.1.1 dashboard(当前系统的实时数据面板) 二、命令列表 2.1 jvm相关命令 2.1.1 dashboard(当前系统的实时数据面板) 使用场景: 在 Arthas 中,dashboard 命令用于提…...
微服务保护之熔断降级
在微服务架构中,服务之间的调用是通过网络进行的,网络的不确定性和依赖服务的不可控性,可能导致某个服务出现异常或性能问题,进而引发整个系统的故障,这被称为 微服务雪崩。为了防止这种情况发生,常用的一些…...
TomCat乱码问题
TomCat控制台乱码问题 乱码问题解决: 响应乱码问题 向客户端响应数据: package Servlet;import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servl…...
STM32F103 SPI+DMA驱动WS2812B的时序实现原理
1. WS2812B_STM32_Libmaple 库深度解析:基于 SPI DMA 的高性能 NeoPixel 驱动实现WS2812B(常被称作 NeoPixel)是当前嵌入式系统中最主流的单线协议可寻址 RGB LED。其核心挑战在于严格的时序要求:T0H(逻辑 0 的高电平时…...
C语言嵌入式开发核心技术难点解析
C语言嵌入式开发中的三大核心技术难点解析 1. 指针:内存操作的艺术 指针是C语言中最具挑战性的概念,也是嵌入式系统开发中不可或缺的核心技术。指针本质上是一个存储内存地址的特殊变量,其设计哲学直接映射了计算机底层的内存管理机制。 1…...
智能客服原型开发:OpenClaw+Qwen3-32B搭建对话系统
智能客服原型开发:OpenClawQwen3-32B搭建对话系统 1. 为什么选择这个技术栈? 去年我接手了一个智能客服系统的预研项目,客户要求两周内交付可演示的原型。传统方案需要前后端开发、对话引擎集成、工单系统对接,时间根本不够。最…...
极域电子教室突破技术:从系统控制到自主操作的攻防对抗
极域电子教室突破技术:从系统控制到自主操作的攻防对抗 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 一、核心痛点:极域电子教室的控制枷锁 在信息化教…...
不会写Shader代码?用PBR Graph制作动态海水效果全流程(Unity 2022版)
不会写Shader代码?用PBR Graph制作动态海水效果全流程(Unity 2022版) 当阳光穿透虚拟海面时,那些闪烁的波纹和渐变的光影往往需要复杂的数学公式——但今天,我们完全可以在不触碰一行CG代码的情况下,用Sha…...
互联网应用架构:LiuJuan20260223Zimage高并发服务设计
互联网应用架构:LiuJuan20260223Zimage高并发服务设计 1. 引言 想象一下这样的场景:你的图片服务突然火了,每秒有几十万用户同时上传和查看图片,服务器开始报警,响应速度越来越慢,用户体验直线下降。这不…...
Linux服务器安装Linux宝塔面板并部署wordpress网站以及雷池WAF,设置禁止使用IP地址访问网站,只能使用域名访问网站
一、Linux服务器安装Linux宝塔面板 这个步骤参考网上其他教程。 二、Linux宝塔面板部署wordpress网站 这个步骤参考网上其他教程,保证网站能够正常访问,并且使用Linux宝塔面板申请并部署了SSL证书,使用https协议默认443端口正常访问网站。 三…...
FPGA加速二值化CNN:从MNIST手写识别到硬件优化实践
1. 二值化神经网络与FPGA加速基础 二值化神经网络(BNN)是近年来边缘计算领域的重要突破,它将传统神经网络中的32位浮点权重和激活值压缩到仅用1位表示(1或-1)。这种极端量化带来的直接好处是存储需求降低32倍ÿ…...
Llama-3.2V-11B-cot一文详解:low_cpu_mem_usage对加载速度提升37%
Llama-3.2V-11B-cot一文详解:low_cpu_mem_usage对加载速度提升37% 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具,专为双卡RTX 4090环境深度优化。该工具通过一系列技术创新,显著提升…...
华为防火墙NAT(Easy-IP)实战:多区域安全访问控制与地址转换
1. 华为防火墙NAT(Easy-IP)技术解析 华为防火墙的NAT(Easy-IP)功能是企业网络架构中实现安全访问和地址转换的核心技术。简单来说,它就像是一个智能门卫,不仅负责检查进出人员的身份(安全策略),还能帮内部员工隐藏真实…...
