Atcoder Beginner Contest 406
比赛链接:ABC406
A - Not Acceptable
将小时转换成分钟直接进行判断。
时间复杂度: O ( 1 ) O(1) O(1)。
#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int a, b, c, d;cin >> a >> b >> c >> d;if (a * 60 + b >= c * 60 + d) cout << "Yes" << endl;else cout << "No" << endl;return 0;
}
B - Product Calculator
根据题意进行模拟,为了避免 overflow 可以使用 __int128_t
来储存计算机当前展示的值。
时间复杂度: O ( N + K ) O(N + K) O(N+K)。
#include <bits/stdc++.h>
using namespace std;#define int long longconst int N = 105;
int n, k, a[N];signed main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);cin >> n >> k;for (int i = 1; i <= n; i++) cin >> a[i];__int128_t now = 1;int inf = 0;for (int i = 1; i <= k; i++) inf = inf * 10 + 9;for (int i = 1; i <= n; i++) {if (now > inf / a[i]) now = 1;else now *= a[i];}string ans;while (now) ans.push_back('0' + now % 10), now /= 10;for (int i = ans.size() - 1; i >= 0; i--) cout << ans[i];cout << endl;return 0;
}
C - ~
- 根据题目条件可知,要找的波浪形的子数组,一定先增大在减小最后再增大。
- 我们只需要找到一个连续递减部分,再在这个连续递减的部分两侧加上至少一个数就能构造出满足题目条件的子数组。
- 每一个连续递减部分能构成的满足题目条件的子数组的数量为这个部分 前面连续递增的长度 × \times × 后面连续递增的长度。
- 因此,只需要找到原数组每个连续递增部分的长度,答案即为所有两个相邻的连续递增部分的长度的乘积的和。
时间复杂度: O ( N ) O(N) O(N)。
#include <bits/stdc++.h>
using namespace std;using ll = long long;
const int N = 3e5 + 5;
int n, p[N], cnt[N];int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);cin >> n;for (int i = 1; i <= n; i++) cin >> p[i];int num = 1;for (int i = 2; i <= n; i++) {if (p[i] > p[i - 1]) cnt[num]++;else if (cnt[num]) num++;}ll ans = 0;for (int i = 1; i <= num; i++) ans += 1LL * cnt[i - 1] * cnt[i];cout << ans << endl;return 0;
}
D - Garbage Removal
对于每一个行、列分别用一个 set
维护这一行中的点的纵、横坐标,每次查询完将对应的点的坐标从 set
中删除。
时间复杂度: O ( ∑ i = 1 Q T log N + N log N ) O(\sum_{i = 1}^Q T\log N + N\log N) O(∑i=1QTlogN+NlogN),其中 T T T 是每次需要删除的点的数量,并且 ∑ i = 1 Q T log N ≤ N log N \sum_{i = 1}^Q T\log N \le N\log N ∑i=1QTlogN≤NlogN。
#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
int h, w, n, q;
set<int> row[N], col[N];int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);cin >> h >> w >> n;for (int i = 1; i <= n; i++) {int x, y;cin >> x >> y;row[x].insert(y), col[y].insert(x);}cin >> q;while (q--) {int op, idx;cin >> op >> idx;if (op == 1) {cout << row[idx].size() << "\n";for (int i : row[idx]) col[i].erase(idx);row[idx].clear();}if (op == 2) {cout << col[idx].size() << "\n";for (int i : col[idx]) row[i].erase(idx);col[idx].clear();}}return 0;
}
E - Popcount Sum 3
从高位往低位考虑,总共放置 k k k 个 1 1 1,利用 d f s dfs dfs 找出答案,具体实现看代码。
时间复杂度: O ( ∑ i = 1 T i log N ) O(\sum_{i = 1}^Ti\log N) O(∑i=1TilogN)。
从高位往地位进行搜索,
- 如果每一位都放 1 1 1,最多进行 log N \log N logN 次 s u m sum sum 就会大于 N N N。
- 如果前面都不放 1 1 1,最多进行 log N − K \log N - K logN−K 次就会被剪枝。
#include <bits/stdc++.h>
using namespace std;#define int long longconst int mod = 998244353;
int n, k, c[65][65];// 预处理组合数
void init() {c[0][0] = 1;for (int i = 1; i <= 60; i++) {c[i][0] = c[i][i] = 1;for (int j = 1; j < i; j++)c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;}
}// cur 是当前位置,sum 是当前的和,cnt 是剩余要放置的 1 的数量
int dfs(int cur, int sum, int cnt) { // 不合法条件:sum 大于 n,剩余位置无法放下需要放置的 1if (sum > n || cnt > cur + 1) return 0;// 所有 1 都放完了,sum 就是要加上的答案if (cnt == 0) return sum % mod;// 剩余的 cnt 个 1 可以放在 0 - p 任意一个位置if (sum + (1LL << (cur + 1)) - 1 <= n) {int oup = ((1LL << (cur + 1)) - 1) % mod * c[cur][cnt - 1] % mod;oup = (oup + c[cur + 1][cnt] * (sum % mod) % mod) % mod;return oup;}return (dfs(cur - 1, sum, cnt) + dfs(cur - 1, sum + (1LL << cur), cnt - 1)) % mod;
}void solve() {cin >> n >> k;cout << dfs(59, 0, k) << "\n";
}signed main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);init();int T;cin >> T;while (T--) solve();return 0;
}
相关文章:
Atcoder Beginner Contest 406
比赛链接:ABC406 A - Not Acceptable 将小时转换成分钟直接进行判断。 时间复杂度: O ( 1 ) O(1) O(1)。 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int a,…...

记录一次win11本地部署deepseek的过程
20250518 win11 docker安装部署 ollama安装 ragflow部署 deepseek部署 文章目录 1 部署Ollama下载安装ollama配置环境变量通过ollama下载模型deepseek-r1:7b 2 部署docker2.1 官网下载amd版本安装2.2 配置wsl2.3 Docker配置:位置代理镜像源 3 部署RAGFlow更换ragfl…...

嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
按键控制LED灯 按键控制LED的开发流程: 第一步:使能功能复用时钟 第二布,配置复用寄存器 第三步,配置中断屏蔽寄存器 固件库按键控制LED灯 外部中断EXTI结构体:typedef struct{uint32_t EXTI_Line; …...
进程状态并详解S和D状态
#define TASK_RUNNING 0x0000 // 运行或就绪(在运行队列) #define TASK_INTERRUPTIBLE 0x0001 // 可中断睡眠(S状态) #define TASK_UNINTERRUPTIBLE 0x0002 // 不可中断睡眠(D状态) #define __TASK_STOP…...
数据获取_Python
1 导入数据 (1) 文件系统 ①表格形式的数据:CSV/Excel import pandas as pd# 读取 CSV 文件 data pd.read_csv(sales_data.csv)# 读取excel data2 pd.read_excel(file.xlsx, sheet_nameSheet2, skiprows5, nrows100) ②JSON # 使用 pandas 库 import pandas as pddata pd…...

<前端小白> 前端网页知识点总结
HTML 标签 1. 标题标签 h1到h6 2. 段落标签 p 3. 换行 br 水平线 hr 4. 加粗 strong 倾斜 em 下划线 ins 删除 del 5. 图像标签 img src-图像的位置 alt- 图片加载失败显示的文字 替换文本 title--- 鼠标放到图片上显示的文字 提示…...

历史数据分析——宁波海运
运输服务 运输服务板块简介: 运输服务板块主要是为货物与人员流动提供核心服务的企业的集合,涵盖铁路、公路、航空、海运、物流等细分领域。该板块具有强周期属性,与经济复苏、政策调控、供需关系密切关联,尤其是海运领域。有不少国内股市的铁路、公路等相关的上市公司同…...

小结:jvm 类加载过程
类加载过程 是Java虚拟机(JVM)将字节码文件(.class文件)加载到内存中,并转换为运行时数据结构的过程。这个过程可以分为多个步骤,每个步骤都有其特定的任务和目的。根据你提供的信息,以下是类加…...

OpenCv高阶(八)——摄像头调用、摄像头OCR
文章目录 前言一、摄像头调用通用方法1、导入必要的库2、创建摄像头接口 二、摄像头OCR1.引入库2、定义函数(1)定义显示opencv显示函数(2)保持宽高比的缩放函数(3)坐标点排序函数(4)…...

Java开发经验——阿里巴巴编码规范实践解析3
摘要 本文深入解析了阿里巴巴编码规范中关于错误码的制定与管理原则,强调错误码应便于快速溯源和沟通标准化,避免过于复杂。介绍了错误码的命名与设计示例,推荐采用模块前缀、错误类型码和业务编号的结构。同时,探讨了项目错误信…...

MySQL——6、内置函数
内置函数 1、日期函数2、字符串函数3、数学函数4、其他函数 1、日期函数 1.1、获取当前日期: 1.2、获取当前时间: 1.3、获取当前时间戳: 1.4、获取当前日期时间: 1.5、提取出日期: 1.6、给日期添加天数或时间…...
MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
文章目录 一、使用SQL查询查看表空间1.1 查询所有表的大小(包括数据和索引)1.2 查询特定数据库的表大小1.3 查询单个表的详细空间信息 二、使用命令行工具查看表空间2.1 使用mysql客户端查询2.2 查看物理文件大小(适用于MyISAM/InnoDB&#x…...
软件架构之-论软件系统架构评估以及应用
论软件系统架构评估以及应用 摘要正文 摘要 2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院,以及渔船图纸审查机构提供一个便捷化的服务平台。在此项目中,…...

低延迟与高性能的技术优势解析:SmartPlayer VS VLC Media Player
在实时视频流的应用中,RTSP(Real-Time Streaming Protocol)播放器扮演着至关重要的角色,尤其是在视频监控、远程医疗、直播等高实时性需求的场景中。随着行业需求的不断升级,对播放器的低延迟、稳定性、兼容性等方面的…...
pytorch小记(十九):深入理解 PyTorch 的 `torch.randint()` 与 `.long()` 转换
pytorch小记(十九):深入理解 PyTorch 的 torch.randint 与 .long 转换 一、torch.randint() 基本概念示例:生成一个二维随机整型张量 二、为什么需要调用 .long()三、典型场景示例1. 随机索引采样2. 伪标签生成3. 直接在 GPU 上生…...
深入解析Spring Boot与微服务架构:从入门到实践
深入解析Spring Boot与微服务架构:从入门到实践 引言 Spring Boot作为Java生态中最受欢迎的框架之一,以其简洁的配置和强大的功能赢得了开发者的青睐。本文将带领大家从Spring Boot的基础知识入手,逐步深入到微服务架构的实践,帮…...

【交互 / 差分约束】
题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 10510; const int M 200 * 500 10; int h[N], ne[M], e[M], w[M], idx; ll d[N]; int n, m; bool st[N]; int cnt[N];void add(int a, int b, int c) {w[idx] c, e[idx] b…...

宝塔面板部署前后端项目SpringBoot+Vue2
这篇博客主要用来记录宝塔部署前端后端项目的过程。因为宝塔部署有点麻烦,至少在我看来挺麻烦的。我还是喜欢原始的ssh连接服务器进行操作。但是公司有项目用到了宝塔,没办法啊,只能摸索记录一下。 我们需要提前准备好后端项目的jar包和前端项…...

现代生活健康养生新视角
在科技飞速发展的今天,我们的生活方式发生巨大转变,健康养生也需要新视角。从光线、声音等生活细节入手,能为健康管理开辟新路径。 光线与健康密切相关。早晨接触自然光线,可调节生物钟,提升血清素水平,…...
鸿蒙Next API17新特性学习之如何使用新增鼠标轴事件
今天咱们接着学习鸿蒙开发文档API17版本的新特性——对鼠标轴事件的支持。这对于需要精细交互的应用来说是一个非常有用的特性,例如地图滚动、文档浏览等场景。本文将详细介绍在鸿蒙 Next 中如何使用新增的鼠标轴事件。 开发步骤 环境准备 在开始开发之前&#x…...

多模态大语言模型arxiv论文略读(八十一)
What is the Visual Cognition Gap between Humans and Multimodal LLMs? ➡️ 论文标题:What is the Visual Cognition Gap between Humans and Multimodal LLMs? ➡️ 论文作者:Xu Cao, Bolin Lai, Wenqian Ye, Yunsheng Ma, Joerg Heintz, Jintai …...

3.4/Q2,Charls最新文章解读
文章题目:Associations between reversible and potentially reversible cognitive frailty and falls in community-dwelling older adults in China: a longitudinal study DOI:10.1186/s12877-025-05872-2 中文标题:中国社区老年人可逆性和…...

通过觅思文档项目实现Obsidian文章浏览器在线访问
觅思文档项目开源地址 觅思文档项目开源地址:https://gitee.com/zmister/MrDoc 觅思文档部署步骤概览 服务器拉取代码: git clone https://gitee.com/zmister/mrdoc-install.git && cd mrdoc-install && chmod x docker-install.sh &a…...
Python列表全面解析:从入门到精通
文章目录 Python列表全面解析:从入门到精通一、列表基础1. 什么是列表?2. 列表特性总结表 二、列表的基本操作(基础)1. 访问元素2. 修改列表 三、列表的常用方法(基础)1. 添加元素的方法2. 删除元素的方法3. 查找和统计方法4. 排序和反转 四、列表的高级…...

5月18总结
一.算法题总结 1. 解题思路:对于这个题,我最开始想到就是二分,但是头痛的是有三个解,如果我在-100到100之间二分,那么只能得出一个解,然后我就想了一下,这个要求精度,那么0.01这么小…...
赋予AI更强的“思考”能力
刚刚!北大校友、OpenAI前安全副总裁Lilian Weng最新博客来了:Why We Think 原文链接:Why We Think by Lilian Weng 这篇文章关注:如何让AI不仅仅是“知道”答案,更能“理解”问题并推导出答案。通过赋予AI更强的“思…...

Linux Bash | Capture Output / Recall
注:本文为 “Linux Bash | Capture Output / Recall” 相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排。 Automatically Capture Output of the Last Command Into a Variable Using Bash 使用 Bash自动将最后一个命令的输出捕获到…...

2025/5/18
继续研究一下大佬的RAG项目。开始我的碎碎念。 RAG可以分成两部分:一个是问答,一个是数据处理。 问答是人提问,然后查数据库,把查的东西用大模型组织成人话,回答人的提问。 数据处理是把当下知识库里的东西…...

基于Quicker构建从截图到公网图像链接获取的自动化流程
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言预备内容转webp程序PicGo设置Quicker设置视频演示总结互动致谢参考 前言 在自建博…...

LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项
LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项 第 一 题 - - - 移 除 元 素方 法 一 - - - 双 重 循 环方 法 二 - - - 双 指 针方 法 三 - - - 相 向 双 指 针(面 对 面 移 动) 第 二 题 - - -…...