iOS

BTS24

B. Back to School '24 P2 - Cheating 题目描述 有 (N) 道题,第 (i) 道题的分值为 (A_i(A_1le A_2le dotsle A_N)),有 (M) 个学生,初始时分数均为 (0)。每次会让分数最低的 (B_i) 个同学获得 (A_i) 分,若有多个分数相同的学生,则让编号更小的学生获得 (A_i) 分。求最终每个学生的分数。 思路 由于 (A_1l

std::make_shared

std::make_shared 是 C++11 引入的一个标准库函数,用于创建一个 std::shared_ptr,并在堆上分配所需的对象。 它的功能是将对象的创建和 shared_ptr 的初始化合并在一起,提高了效率和安全性。 使用方法: T: 共享指针所管理的对象的类型。 args...: 传递给 T 构造函数的参数。 特点: 高效:std::make_shared 会在一次内存分

`std::future`--异步的优势

std::future 相比于直接使用线程在 C++ 中有几个重要的优势,主要体现在同步结果获取、简化代码管理、以及更安全的异步任务管理等方面。以下是 std::future 的一些主要优势: 1. 自动结果获取与同步 std::future 提供了一种便捷的机制来获取异步任务的返回值。当我们使用线程时,通常无法轻松获得线程的返回值,线程函数如果有返回值,需要通过共享变量、全局变量或其他同步机

std::packaged_task<返回类型(参数类型)>

std::packaged_task 概述 std::packaged_task 是 C++11 引入的标准库模板类,用于包装一个可调用对象(如函数、lambda 表达式、函数对象等),使其能够与 std::future 协同工作。 简单来说,它将一个任务(可调用对象)包装起来,并允许你获取该任务的执行结果,这样你可以在一个线程中执行任务,并在另一个线程中获取其结果。 std::packaged_

CSP-S 模拟赛 33

CSP-S 模拟赛 33 rnk19,(30+20+40+15=105)。 T1 构造字符串 10pts:输出 (-1)。 30pts:对于所有 (z_i=0) 的情况,也就是说给定的两个位置字符都不同。记录有哪些位置的字符是不同的,然后从 (1) 到 (n) 扫一遍,输出除去不同的字符之外的字典序最小的字符。 70pts:暴搜。枚举每个位置可能的字符,对于每一种方案检查是否符合要求。复杂度 (O

2024 Noip 做题记录(四)

(text{By DaiRuiChen007}) Round #13 - 2024.10.1 A. [ARC165D] Compare Problem Link 题目大意 判断是否存在一个长度为 (n) 的字符串 (S),满足 (m) 个限制 ((a,b,c,d)),要求 (S[a,b]) 字典序小于 (S[c,d])。 数据范围:(n,mle 2000)。 思路分析 从一些必要条件开始

std::unique_lock

std::unique_lock 是 C++11 标准库中的一个类,提供了一种灵活的方式来管理互斥量(mutex)。 它比 std::lock_guard 更加灵活,允许在不同的作用域和不同的锁定策略之间进行选择。以下是对 unique_lock 的详细解释,包括其用途、使用方法和优点。 1. 定义 std::unique_lock 是一种 RAII(资源获取即初始化)风格的锁,它在构造时锁定给

Sheep Eat Wolves

【具体问题具体分析】通过bfs遍历状态空间 STL tuple(元组) j>i+q 隐含前提:i,j>0(理解式子,自己写出来) 点击查看代码

容器不是线程安全

标准库中的 std::queue 不是线程安全的。 这意味着在多线程环境中,多个线程同时对 std::queue 进行读写操作时,可能会导致数据竞争(data race)和未定义行为。下面是详细的解释: 原因 数据竞争: 当多个线程同时对 std::queue 进行操作(如 push、pop 等),如果没有使用适当的同步机制(如锁),就会出现数据竞争。 数据竞争可能导致程序崩溃或结果不正确,

c++中的读写锁

读写锁是一种特殊的锁机制,允许多个线程同时读取共享数据,但在写入共享数据时,只有一个线程可以进行写操作,其他线程必须等待。 这种机制对于读多写少的场景非常有效,可以提高并发性能。以下是通过 shared_lock、unique_lock、shared_mutex 和 mutex 的解释来说明读写锁的实现和应用。 1. 基本概念 读锁(Shared Lock): 使用 shared_lock

E61 树形DP P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟

视频链接:E61 树形DP P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟_哔哩哔哩_bilibili     P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)   P8625 [蓝桥杯 2015 省 B] 生命之树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn

读者写者与生产者消费者应用场景

在并发编程中,读写场景和生产者消费者场景是非常经典的两种问题。它们的基本思路和实现方法在许多应用中都可以找到。下面分别介绍这两种场景的一些经典问题及其解决方案。 读写场景 经典问题 多线程访问共享资源: 多个线程需要同时读取某个共享数据(例如,配置文件、缓存等),但在某个线程需要写入时,其他线程必须等待。 统计信息更新: 某个程序模块需要定期更新统计信息,其他模块在此期间仍然可以读取

Codeforces Rund 977 div2 个人题解(A~E1)

Codeforces Rund 977 div2 个人题解(A,B,C1,C2,E1) Dashboard - Codeforces Round 977 (Div. 2, based on COMPFEST 16 - Final Round) - Codeforces 火车头 A. Meaning Mean 每个测试的时间限制:1秒 每个测试的内存限制:256兆字节 输入:标准输入 输出:标准

C2. Adjust The Presentation (Hard Version)

C2. Adjust The Presentation (Hard Version) This is the hard version of the problem. In the two versions, the constraints on $q$ and the time limit are different. In this version, $0 leq q leq 2 cdot 1

2024-10-6 模拟赛总结

(100+80+100+0=280),暴力又写挂了。 比赛链接:http://172.45.35.5/d/HEIGETWO/homework/67025b796735d3863dc7f60d 或者 http://yl503.yali.edu.cn/d/HEIGETWO/homework/67025b796735d3863dc7f60d A - fountain 题意: 给定一条线段和一个圆,求线段

2024初秋集训——提高组 #31

C. 特殊区间 题目描述 给定一个数列 (A_1,A_2,dots,A_N),我们定义一个区间 ([l,r](l<r)) 的价值为: [max limits_{a,b,c,din [l,r],cne d}{A_a-A_b-(A_coplus A_d)} ]给定 (Q) 次查询,每次查询有多少个区间的价值在 ([d,u]) 之间。 思路 显然,我们会令 (A_a) 最大,(A_b) 最小,(A

扫描线模板(矩形面积并与周长并)

扫描线模板(矩形面积并) 首先离散化的思想,将各个线段细分到单位长,于是就是动态求当前值域内 tag (> 1) 的数量。 以下是参考代码,十分优美 矩形周长并复杂一些,并且存在一个细节 - 对于高度相同线的先增后删,避免两条边重合 思路是分成竖边和横边,分别计算,每条边的对答案的贡献是这一条边加上后的变化值(tag &>1& 的数量) 以下是参考代码:

一本通 1071:菲波那契数

【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。 【输入】 输入一行,包含一个正整数k。(1 ≤ k ≤ 46) 【输出】 输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。 【输入样例】19 【输出样例】 4181 include using namespace std;

学期(2024-2025-1) 学号20241425 《计算机基础与程序设计》第2周学习总结

学期(2024-2025-1) 学号20241425 《计算机基础与程序设计》第2周学习总结 作业信息 这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计) 这个作业要求在哪里 这个作业的目标 <数字化、信息安全、自学教材(计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试)> 作

信息学奥赛复赛复习13-CSP-J2021-02插入排序-排序稳定性、插入排序、sort排序、结构体、计数排序

PDF文档公众号回复关键字:20241006 1P7910 [CSP-J 2021] 插入排序 [题目描述] 插入排序是一种非常常见且简单的排序算法。小 Z 是一名大一的新生,今天 H 老师刚刚在上课的时候讲了插入排序算法。 假设比较两个元素的时间为 O(1),则插入排序可以以 O(n^2) 的时间复杂度完成长度为 n 的数组的排序。不妨假设这 n个数字分别存储在 a1,a2,…,a

B. 线段取交

题目 下载链接 算法 可以发现是求逆序对 时间复杂度限制在 (O(n log n)) 树状数组 记录每一个值的多少 转化为求前缀和 ~洛谷 ctj, 意思一下~ 归并排序 仍然 ctj BST 代码晚上补 总结 常见套路

Introduction to yttomp3.click and Its Associated GitHub Link

Introduction to yttomp3.click and Its Associated GitHub Link In the digital age, the availability of various online tools has made our lives more convenient and enriched our multimedia experiences. O

P7078 [CSP-S2020] 贪吃蛇 题解

P7078 [CSP-S2020] 贪吃蛇 这题好啊 题目传送门 看到题之后觉得有点像砍蚯蚓的那道题 看看题目 可以证明,若一条蛇在吃完之后不是最弱的那一条蛇,那么他一定会选择吃,证明如下 设蛇长为 (a_{1, dots ,n}) 且依次递增,那么很明显的 因为 ​ $$a_x>a_

嵌套类递归

嵌套类递归 都需要一个全局变量记录当前正在处理的位置 基础计算器 III 含有嵌套的表达式求值,时间复杂度 O(n) 递归(推荐),index++ 跳过左括号,而不是用 where + 1 去跳过 394. 字符串解码 含有嵌套的字符串解码,时间复杂度 O(n) 从第一个右括号开始解析,从里向外解析每一对括号,解析成字符串后入栈,继续找下个右括号 用两个栈分别记录左括号之前

P8819 [CSP-S 2022] 星战 题解

“不可以,总司令” 题目传送门 随机化的巧妙运用 考虑什么时候可以发起反攻, 每个节点都可以走到一个环上,每个节点的出度为(1) ..... 事实上,我们会发现第一个条件是没用的,因为当每个节点出度为一时就一定可以走到一个环上 所以这个问题就转化为了判断当前的图是否每个点的出度为 (1) 但是我们发现如果维护每个点的出度的话复杂度会假掉,修复/炸掉一个节点是要遍历他的所有出度,不行。 既然维护出度

搜索算法合集 - By DijkstraPhoenix

搜索算法合集 By DijkstraPhoenix 深度优先搜索 (DFS) 引入 如果现在有一个迷宫,如何走路径最短? 方法 走迷宫最简单粗暴的方法式什么呢?当然是把所有路都走一遍啦! 如果是手动计算的话,可能会把你手指累得抽筋,但电脑不会,电脑具有强大的算力,这种暴力的事情当然是交给电脑做啦。 深搜的本质:一条路走到底,走到死胡同再往回走,回到上一个岔口继续走,直到找到正确的路 实际

《如 何 速 通 一 套 题》13.0

邮寄 开场秒掉 A。 B 不会做,写了 70。 ----- 1h ----- 然后看 C。 C 瞪了 114514 眼看不出来,然后再瞪了 1919810 眼,终于看出来了。 ----- 3h ----- 然后就不会了,D 啥都想不出来。 最后 100+70+100+0=270。 A 喷泉 弱智题。 直接计算 (C) 至 (AB) 的距离 (-r) 和 (A, B) 至 (C) 的距离最大值 (+

10.6 总结

T1 一道计几,还行,第一个就是直接三分支线上的点然后求函数谷值,第二个就是 (min{Dist(x_1, x_3), Dist(x_2, x_3)})。 T2 每次操作后将数列离散化并记录对应区间,然后对数列进行 (gcd), 如果 (a) 是 (gcd) 的因数,就不用操作。

2024/10/06 模拟赛总结

(100+70+0+0=170),CD 暴力真写不了 #A.喷泉 圆和线段一定没有交点,所以最长距离一定在线段端点,直接比较即可。最短距离就是垂直线段长度 #B.红绿灯 直接暴力优化,经过一定操作一些数会变成一样,所以经过一次操作之后就去重一次 为了继续剪枝,我们可以进行完每次操作进行完就求一次 (gcd),如果当前值是 (gcd) 的因数则不会修改,直接跳过即可 #C.子集 注意到 (F_{

gym103687D / QOJ3998 The Profiteer

题意 有 (n) 个物品,和一个背包容量上限 (m)。每个物品有价值 (v_i) 和体积 (a_i)。 你需要选择一段区间 ([l,r]),将这个区间内的体积变为 (b_i),剩下的不变。然后你对这 (n) 个物品做背包,设背包容量结果为 (f(i)),需要求出有多少段区间使得 (dfrac{sum_{i=1}^m f(i)}{m}le E)。 (n,kle 2times10^5,nkle 10^

<<  <  32  33  34  35  36  37  38  39  40  41  42  >  >>