iOS
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(资源获取即初始化)风格的锁,它在构造时锁定给
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
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_
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) 的距离最大值 (+
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^