- 博客(214)
- 收藏
- 关注
原创 P1596 [USACO10OCT] Lake Counting S (DFS求连通块为题)
【代码】P1596 [USACO10OCT] Lake Counting S (DFS求连通块为题)
2025-08-18 15:10:43
391
原创 P2249 【深基13.例1】查找
这两个函数的作业是用二分查找一个属再数组出现的位置,区别是upper返回第一个大于搜索数的位置,而。如果满足,那么一定有 x=a[ans],所以如果不等那么输出 −1 就行了。返回第一个大于等于 x 的数的地址。而由于是地址,在最后要 −a(也就是减去地址)。是第一个大于等于的数的位置。upper_bound和lower_bound。
2025-08-12 11:11:49
224
原创 P3612 [USACO17JAN] Secret Cow Code S
题解来自洛谷题解,笔记自用这段代码是为了解决这个问题的:给定一个初始字符串s和一个位置N,通过反向推导的方式找到无限扩展字符串中的第N个字符,而不需要实际生成这个无限长的字符串。
2025-08-10 15:23:10
831
原创 P1044 [NOIP 2003 普及组] 栈
orz,大佬们真的是很厉害,想着递推但是只拿了60分。x表示当前还未入栈的数字个数。题解来自洛谷题解,做笔记用。y表示当前栈中的数字个数。
2025-08-08 21:51:26
225
原创 P2415 集合求和
总和=(a[0]+a[1]+⋯+a[n−1])×2n−1\text{总和} = (a[0] + a[1] + \cdots + a[n-1]) \times 2^{n-1}总和=(a[0]+a[1]+⋯+a[n−1])×2n−1。个元素可以随意选或不选(2^(n-1) 种方式),所以该元素出现在 2^(n-1) 个子集。**原因:**固定一个元素,其它。
2025-08-02 15:32:14
137
原创 P2285 [HNOI2004] 打鼹鼠
题解来自洛谷题解,仅仅自用学习这个问题的目标是让一个机器人在网格中尽可能多地击打到出现在某些格子的鼹鼠。机器人每时刻只能在网格中相邻的格子中移动,或者保持当前位置不动。任务要求在给定的时间内计算出机器人可以打死的最大鼹鼠数量。
2025-07-31 15:45:27
266
原创 P1020 [NOIP 1999 提高组] 导弹拦截
题解来自洛谷题解,仅仅用于自己整理知识这段代码是 NOIP1999 提高组第一题「导弹拦截系统」的一个→ 即求一个的长度→ 即将整个序列划分成最少数量的。
2025-07-29 20:26:12
689
原创 牛客周赛 Round 102
a = c1[i-1] // 段1 要变成1。+ (c0[j-1] - c0[i-1]) // 段2 要变成0。+ (c1[k-1] - c1[j-1]) // 段3 要变成1。那我们怎么构造一个跳变次数为 3 的串呢?:跳变 3 次(1→0、0→1、1→0)✅。:跳变 1 次(1→0);,就一定跳变 3 次。:总共跳变 3 次;:总共跳变 3 次;
2025-07-28 19:15:25
274
原创 P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two
【代码】P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two。
2025-07-28 15:19:24
140
原创 P2392 kkksc03考前临时抱佛脚
借鉴题解自用笔记这是一道将每一刻题目尽量两两并作、以最短时间完成所有题目的。每一刻题目都做一次“将题目划分成左右两组,使两组耗时差最小”的0.1背包问题。
2025-07-26 22:06:29
241
原创 P3842 [TJOI2007] 线段
定义f[i][0]和f[i][1]f[i][0]表示到达第i行的R_i点的最短路程。f[i][1]表示到达第i行的L_i点的最短路程。
2025-07-26 20:00:53
348
原创 P1164 小A点菜
(2)如果j>第i道菜的价格 f[i][j]=f[i-1][j]+f[i-1][j-第i道菜的价格];(3)if(j<第i道菜的价格) f[i][j]=f[i-1][j];(1)如果j==第i道菜的价格:f[i][j]=f[i-1][j]
2025-07-25 14:37:46
147
原创 P1308 [NOIP 2011 普及组] 统计单词数
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
2025-07-24 21:24:54
158
原创 P1049 [NOIP 2001 普及组] 装箱问题
我们需要在给定的物品中选择若干个,使得它们的体积尽可能接近箱子的容量 V,并且不超过箱子的最大容量。最终的目标是使得箱子剩余的空间最小。
2025-07-24 20:50:20
170
原创 P1115 最大子段和
这个问题是经典的最大子数组和问题,也称Kadane`s Algorithm。我们需要在一个长度为n的序列,找到一个连续子数组,使得该子数组的和最大。
2025-07-24 14:58:29
254
原创 P4017 最大食物链计数
题目中提到食物链是从最左端的生产者到最右端的消费者,这就意味着我们在一个有向图中,查找从源头节点到终点节点的最长路径。图中的节点表示生物,边表示捕食关系。
2025-07-24 10:58:31
283
原创 priority_queue的常见用法详解
priority_queue又称优先队列,其底层是用堆来进行实现的,在优先队列中,队首元素一定是当前队列中优先级最高的哪一个(默认为大根堆)priority_queue又称优先队列,其底层是用堆来进行实现的,在优先队列中,队首元素一定是当前队列中优先级最高的哪一个(默认为大根堆)当然,可以在任何时候往优先队列里面加入(push)元素,而优先队列底层的数据结构堆(heap)会随时调整结构。时间复杂度为O(1)。和队列不一样的是,优先队列没有front()和back()函数,
2025-07-23 17:15:42
198
原创 RC-u3 兰州拉面派餐系统
拉面管的煮面流程调度问题,主要考察模拟+优先队列调度+排序输出能力。如果没有空闲篮子,等待最早一个篮子煮好,再把当前订单放进去。开始处理订单时,先将订单按顺序尽量分配到空闲篮子里。顾客的订单是提前下好的,编号从 1 到 L。的订单优先完成送餐(即“先到先得”)。m个篮子:每个篮子一次只能煮一碗面。n种面:每种面有固定煮面时间。l个单子:每个客单点一种面。如果多个篮子同时完成,选择。每个订单的送餐时间。每个篮子煮了多少碗面。剩下篮子里的订单送餐。
2025-07-22 17:44:39
251
原创 P1434 [SHOI2002] 滑雪(记忆化搜索)
用s[i][j]表示从(i,j)点出发能走的最长距离。直接dfs会tle,那么就需要记忆化优化。每次搜索一次记忆一次即可。
2025-07-22 14:06:58
158
原创 牛客周赛 Round 101--幂中幂plus
表示前缀和 si=∑j=1icjs_i = \sum_{j=1}^{i} c_jsi=∑j=1icj。1.利用c_i=base^{c_{i-1}}%mod这个递推关系,用一个数组提前打表模拟知道循环节出现。2.对所有ci做前缀和si=c1+c2+...+ci,方便o(1)查询。3.若k再循环节前,否则用舒徐额拆分+循环节前缀和快速计算。3.mod很小(<=10^6),说明会有循环节出现。手写递归快速幂,计算a^bmodm,效率为logb。2.ci的计算为幂套幂,很容易TLE或者溢出。
2025-07-21 16:32:48
226
原创 暑假训练之动态规划---动态规划的引入
解题思路:状态:f[i]表示凑出面值为i至少需要的纸币张数目标态f[w],初始态f[0]=0,因为凑出0元一张纸币都不要需要转移方程f[v]=min{f[v-a[i]]}+1如果v-a[i]需要用x张纸币,那么只需要加上a[i]这一张纸币就行。
2025-07-20 18:24:12
173
原创 set的使用方法
set是 C++ STL(标准模板库)中非常常用的一个容器,它的作用是:✅ 自动。底层基于红黑树(平衡二叉搜索树),每个操作时间复杂度都是。xxs.count(x)s.find(x)xs.size()s.clear()*s.begin()反向迭代器指向最大值🎯 例子:快速去重 + 排序。
2025-07-06 11:33:18
334
原创 C - Large Queue
由于不能真的插入个元素(会爆内存),所以直接压入一个pair{x,c}表示批量添加。使用队列q,每个元素是一个pair<x,count>每次查看队首的val和他的cnt(重复次数)count:这个值出现的次数(批量增加)添加c个值为x的元素到队尾。循环删除,知道删够k个。
2025-07-06 10:44:56
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人