iOS

20240814

Sternhalma 我们给格子编个号,然后暴力打表出一个格子可以走到哪些点,然后状压 (dp),从全 (1) 的情况开始倒推,每次查询将其转化为二进制数列即可 Honeycomb 我们可以将每一个格子进行染色,至于如何染色我们可以找到如下这个字符 然后打表即可,假设我们只能自己走空格,那我们就可以用 (bfs) 答案就是经过了几个不同颜色的空格 Cook and Porridge 我们可以

std::vector 和 std::map 都支持以下比较运算符

在 C++ 标准库中,std::vector 和 std::map 都支持以下比较运算符: ==(相等运算符) !=(不等运算符) <(小于运算符) <=(小于等于运算符) >(大于运算符) >=(大于等于运算符) 1. std::vector 的比较 对于 std::vector,这些运算符通过词典序比较(lexicographical comparison)进行。词

最大双子段和

一个正向取前缀和,一个反向取,最后枚举断点。 循环双子段和: 也是取反集,减掉。

欧拉函数φ

欧拉函数 定理 欧拉函数,即 (varphi(n)),表示的是小于等于 (n) 和 (n) 互质的数的个数,详细定义看wiki。 欧拉函数其实就是容斥原理的应用,举个例子: 如 (n=6),(1,2,3,4,5,6) 是整个序列,我们将 (6) 的质因子 (2),(3) 取出,减去小于等于 (6) 的 (2) 的倍数和 (3) 的倍数,但是 (2) 和 (3) 的公倍数 (6) 被减了两次所以还要

CF2006A Iris and Game on the Tree

题目链接 题解 知识点:贪心,博弈论。 一个 (01) 串中 (01, 10) 的个数差只与首尾两个字符相关,若首尾字符相同,则个数差为 (0) ,否则为 (1) 或 (-1) 。因此,树上除了根节点和叶子节点的 (?) 是不影响叶子节点权值的(但可能影响策略,导致答案不一样),我们只需要考虑叶子节点和根节点的情况即可。 设 (cnt_0, cnt_1, cnt_2) 分别为值为 (0, 1, ?

`std::optional` 函数返回值

std::optional 是 C++17 中引入的一个模板类,用于表示一个值可能存在也可能不存在的情况。 它可以存储一个值,或者表示没有值的状态,类似于其他编程语言中的“可选”类型。 std::optional主要特性: 值的存在性:可以使用 has_value() 方法检查 std::optional 是否包含一个有效的值。 访问值:可以使用 value() 方法获取存储的值,如果没有值,则

std::stod:“123.456”-> 123.456

std::stod 是 C++ 标准库中一个用于将字符串转换为 double 类型的函数。它属于 <string> 头文件中的函数,通常用于将包含数字的字符串转换为相应的浮点数值。 函数原型 参数 str:要转换的字符串,应该表示一个有效的浮点数。 pos(可选):指向 std::size_t 类型的指针,用于存储转换后第一个未处理字符的位置。如果不需要此功能,可以传递 nullp

CF 1762 F

考虑怎么不重不漏的计算每一个区间。可以发现,每一个可行的区间一定是可以找到 (i_1sim i_k) 使 (a_{i_1}sim a_{i_k}) 是单调不增或者不降的。 这是因为,考虑有一个地方比两边都要小,那么我们可以直接忽略它,两边的差一定在 (k) 以内。比两边都大同理。因此我们现在就要算单调不增个数加单调不降减去 (a_l=a_r) 的 ([l,r]) 个数。现在只讨论一种单调不降的。

string的find()与npos

在 C++ 中,std::string::find() 是一个用于在字符串中查找子字符串或字符的成员函数。查找成功时返回匹配的索引位置,查找失败时返回 std::string::npos,表示未找到。 std::string::find() 函数原型 参数说明 str/s:要查找的子字符串或字符。 pos(可选):从哪个位置开始查找,默认为 0,即从字符串的开始位置查找。 返回值:查找成功时返

Kernel Stack栈溢出攻击及保护绕过

前言 本文介绍Linux内核的栈溢出攻击,和内核一些保护的绕过手法,通过一道内核题及其变体从浅入深一步步走进kernel世界。 QWB_2018_core 题目分析 start.sh qemu-system-x86_64 -m 128M -kernel ./bzImage -initrd ./core.cpio -append "root=/dev/ram

CF2000F Color Rows and Columns

题目链接 题解 知识点:贪心、背包dp。 先考虑一个矩形的情况: 若是方形,行列交替染色最优。 若不是方形,选行列中较小的一侧染色,直到变为方形。 因此,我们可以根据上面的结论预处理 (c_{i,j}) ,表示第 (i) 个矩形贡献为 (j) 的最小花费。 现在考虑多个矩形的情况,显然是一个分组背包问题。每个矩形为一个组,第 (i) 个矩形有 (a_i + b_i + 1) 个项(包括不选)

CF1270H Number of Components 题解

Description 给一个长度为 (n) 的数组 (a),(a) 中的元素两两不同。 对于每个数对 ((i,j)(i<j)),若 (a_i<a_j),则让 (i) 向 (j) 连一条边。求图中连通块个数。 支持 (q) 次修改数组某个位置的值,每次修改后输出图中连通块个数。 (n,qle 5times 10^5,1le a_ile 10^6),保证任意时刻数组中元素两两不同。 So

`std::string_view`(c++17) 和 `std::stringstream` 使用区别·

std::string_view 和 std::stringstream 都是 C++ 中处理字符串的工具,但它们的设计目标和使用场景非常不同。我们可以通过几方面进行对比。 1. 设计目的和核心功能 std::string_view: 设计用于只读访问字符串或字符序列。 是一个轻量级的字符串视图,不会持有字符串的数据,仅仅是对现有字符串的引用。 适合高效地操作已有字符串或进行快速读取(例如子串

Vant之手机端上传图片只允许拍照上传

1.开发拍照上传页面 - andImgCapture.vue 2.编写androidOrIos.js 3.导入两个文件 4.在主页面实现拍照上传基本功能 即可。

Codeforces Round 973 (Div.2) A-E题解

Codeforces Round 973 (Div.2) A-E题解 比赛传送门 A. Zhan's Blender 数学 显然答案为 (lceil frac{n}{min(x,y)} rceil)。 B. Battle for Survive 贪心 最后的赢家一定是最后一个格斗士,因此我们只需要让倒数第二名的等级越低越好,因此只需要让其余格斗士和倒数第二个格斗士都战斗一次,并且被淘汰即可。所以

20240813

Goals, Goals! Everywhere 先考虑最大的情况,那就是没有助攻,全是进球,观察样例,发现好像最小进球数好像就是最大数除以 (2),但是有一种特殊情况,就是最大的那个球员比剩下的球员加起来还多(C罗和国足) Game of Primes 如果 (F(x) 与 frac{x}{F(x)}) 都是质数,那么 (Antwan) 对它毫无办法,如果都不是那么也不用管,所以 (Ammar

csp

#include <iostream> using namespace std; bool isPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i * i <= n; i++) { if (n % i == 0) {

USB2.0设备的休眠挂起及远程唤醒

USB可见设备状态,分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,其他状态属于USB设备内部而不可见。其中有关电源的,大致可分下面三类: 连接状态(Attached):设备连接,但未提供电源。 上电状态(Powered):设备被复

「杂题乱刷2」AT_arc184_a

题目链接 AT_arc184_a Appraiser 解题思路 Q = 999: 我们考虑将第一个硬币与其余的硬币作比较,最后若交互库返回的 (1) 更多,那么说明第 (1) 枚硬币是假币,否则第 (1) 枚硬币是真币,直接存动态数组最后输出即可。 操作次数容易得出为 (999) 次。 Q = 920: 考虑将每 (11) 枚硬币分一个组,每次询问每组的第一个硬币和剩下的硬币,由于假币数量只有 (

[考试记录] 2024.9.22 csp-s模拟赛31

T1 自然数 手玩数据可以知道,对于 (012、01、0) 这样的每次删去后面数的序列的 (text{mex}) 值是单调不降的。并且每次删去前面一个数 (val) 的时候,产生影响的区间只是那些只有一个 (val) 的序列,影响是如果该区间的 (text{mex}>val) 那么就把它设置为 (val)。 so,先 (mathcal{O}(n)) 维护出原始序列每次删后面的一个数的 mex

【2024.09.15】NOIP2024 赛前集训(2)

【2024.09.15】NOIP2024 赛前集训(2) A 最大的难点戏剧性地变成了二叉搜索树是什么。 先根据已知序列把二叉树建出来,忘了二叉搜索树的移步 二叉搜索树 & 平衡树 - OI Wiki (oi-wiki.org) 根据题意, 想到dp计数,(f[u]) 表示 (u) 子树内的答案, 则有转移: [f[u] = f[lson] times f[rson] times C_{

[考试记录] 2027.9.15 csp-s 模拟赛29

T1 出了个大阴间题(repair) T2 最简单辣快来做(satellite) T3 是我的你不要抢 场上脑子一热拉了泡二分,才反应过来二分没单调性。 就hash, hash完了跑暴力,发现一分也拿不到。尝试记忆化此过程,就可以拿到高贵的 (100pts)。 当题目中没给 (n) 范围的时候应该就已经意识到了,问题出在 (n) 这里。(n) 变大时字符串长度 (L) 就在变小,所以复杂度

[考试记录] 2024.9.16 csp-s模拟赛30

T1 不相邻集合 服了,考场上拉一泡权值线段树,硬是没调过来。然后一下考就知道是哪的问题了,服了~ 维护两个东西:一是以 (x) 为右端点的最长可重集的长度,二是以 (y) 为右端点的最长可重集长度。两者一加再减一就是答案。然后考场上愣是想不到。这玩意用权值线段树很好维护,考虑到因为是以 (x) 为右端点的最长长度就是把以 (1sim x-2) 中的最长长度加一即可。 T2 线段树 solu

最长公共子串 题解

Statement Q7.1.2.4,时限 4s 给一个串,定义 (mathrm{LCS}) 为最长公共子串长度,(q) 次询问,每次给出 (l,r),求 [ operatorname{xor}_{i=1}^{r-l+1}{i+mathrm{LCS}(S[l,l+i-1],S[l+i-1,r])} ](nle 10^5,qle 30) Solution tag:SA,线段树维护分治结构,orz h

BZOJ 2555 = P5212 SubString 题解

Statement 给你一个字符串 (text{init}),要求你支持两个操作: 在当前字符串的后面插入一个字符串; 询问字符串 (s) 在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。 Solution extend 中 link[cur] = q,相当于 link,链加 新建 copy 那里,相当于 link,cut,链加 询问,相当于单

BZOJ 3277 串 题解

Statement 给 (n) 个串,问每个串有多少子串是所有 (n) 个串中至少 (k) 个串的子串。 Solution 1 对于每个后缀,二分他最右的满足条件的前缀,这就是他贡献多少次。 设二分的 (x),可以二分找出 height 上左边、右边第一个 (<) 他的位置 同样预处理对于所有 (l),最左的 (r) 满足 ([l.

BZOJ 4545 DQS 的 trie 题解

Statement 维护一棵树,边权 (in{texttt a,texttt b,texttt c}),根为 (1),定义这棵树的子串为从 (1) 走到所有点构成的字符串的所有后缀,需要支持以下操作: 问当前树的本质不同子串数 给一个点添加一棵子树 问一个串在当前树中作为子串的出现次数 Solution 直接广义 SAM + LCT 考虑如何减小常数。 离线,先把最后的 trie 对应的广义

BZOJ 4310 跳蚤 题解

Statement 把 (S) 分成不超过 (k) 段,使每段的最大子串中的最大串最小。输出这个串。 Solution 按排名二分这个串,check 中从右往左贪心地划分,需要实现 (O(1)) 比较两个子串大小。

BZOJ 4932 = BZOJ 9434 = LOJ 6070 基因

Statement 问区间本质不同回文串数,强制在线,(nle10^5). 其实还有个四倍经验:BZOJ 5384. Solution 1 考虑一个结论:(s) 的所有回文后缀按长度排序后,可以划分为 (O(log|s|)) 段等差数列。 考虑离线怎么做:移动右端点 (i),新增一个串 (s),设其上一次出现的起点为 (q),则 ([q+1..i-text{len}(u)+1]) 区间加一,其中

<<  <  42  43  44  45  46  47  48  49  50  51  52  >  >>