
数据结构与算法
文章平均质量分 72
多为一些和ACM有关的内容
mldl_
这个作者很懒,什么都没留下…
展开
-
牛客小白月赛110(打表、容斥+二分、区间dp、DFS)
牛客小白月赛110(打表、容斥+二分、区间dp、DFS)原创 2025-02-20 22:49:29 · 783 阅读 · 0 评论 -
牛客练习赛131(dp,dfs,bfs,线段树维护等差数列)
牛客练习赛131(dp,dfs,bfs,线段树维护等差数列)原创 2024-11-07 21:17:23 · 888 阅读 · 0 评论 -
牛客小白月赛103(打表、二进制、几何、思维)
牛客小白月赛103(打表、二进制、几何、思维)原创 2024-10-30 21:12:49 · 824 阅读 · 0 评论 -
牛客周赛 Round 62(期望、DFS、主席树、DP、逆推DP)
牛客周赛 Round 62(期望、DFS、主席树、DP、逆推DP)原创 2024-10-07 11:28:24 · 1044 阅读 · 0 评论 -
牛客周赛 Round 63(构造、组合数、线性基)
此时,再看目标向量tar,tar 可由 y1 ^ y2 ^ y3 得到,即 (x1) ^ (x1^x3) ^ (X1^x2) = tar,对1、2、3 三个灯都操作(x1、x2、x3 都出现奇数次)。这里,我们引入’基’ 的概念,对于 n 维向量空间,对每一维都创建一个’基‘,即选择若干个向量,通过异或,可以得到最高位在 i 为 1 的向量。此时,tar = (1, 1, 0),通过 y1 ^ y3 可以得到,即 (x1) ^ (x1 ^ x2) ,即对灯 2 进行一次操作即可。设,每次查询,可以把。原创 2024-10-15 21:28:28 · 1055 阅读 · 0 评论 -
牛客周赛 Round 64(博弈论、思维、构造、LCA、换根DP)
先手只需要第一步操作时,选择多出来的这一手操作,即可转化为 ‘先手’ 变 ’后手‘ 且出现 ’后手必胜的局面‘。每轮操作,后手都选先手没有操作的两个元素,即可实现使四个元素整体减一,直到出现==’例1’==,后手必胜。为了方便表示,把 2 * 2 的矩阵的四个元素定义为 1、2、3、4,如下图所示。这时,对于后手来说,肯定希望通过操作,使得==由’例3‘变为’例1‘==的情况。即,要么元素2和元素3拿完,剩下元素4;可以把点分为两类,一类为 u 为根的子树内的点,一类为 u 为根的子树外的点。原创 2024-10-26 17:12:16 · 844 阅读 · 0 评论 -
牛客周赛 Round 61(思维、组合数)
牛客周赛 Round 61(思维、组合数)原创 2024-09-28 13:02:29 · 1064 阅读 · 0 评论 -
牛客小白月赛101(栈、差分、调和级数、滑动窗口)
牛客小白月赛101题解。(栈、差分、调和级数、滑动窗口)原创 2024-09-20 22:36:56 · 1124 阅读 · 0 评论 -
牛客练习赛129(欧拉筛、快速幂、排列组合、二进制、倍增、线段树、状压DP)
牛客练习赛129(欧拉筛、快速幂、排列组合、二进制、倍增、线段树、状压DP)原创 2024-09-29 15:13:23 · 1183 阅读 · 4 评论 -
牛客小白月赛99(BFS、欧拉筛、完全背包、离散化、树状数组、二分查找)
第二部分,机器人在墙之间碰撞,可以认为 A -> B -> A 是一组碰撞,这样一组碰撞的时间为 2 * (X。ps:这里,由于所有的墙都在 1 ~ n,且每个位置只有一个墙,故而最多有根号n个物品是不同的,注意去重。第一部分 ”机器人从起始位置到怪物的位置n“ 的时间是固定的,如果机器人可以在时间t之内走到n的话。根据题意,机器人行走的时间T = 机器人从起始位置到怪物的位置n + 机器人在墙之间碰撞的时间S。显然,我们可以把m个墙,当作m-1个物品,每个物品的体积和价值均为 2 * (X。原创 2024-09-18 21:42:56 · 879 阅读 · 0 评论 -
牛客周赛 Round 60(思维、逆元、组合数、概率DP)
牛客周赛 Round 60题解。原创 2024-09-18 21:37:18 · 488 阅读 · 0 评论 -
牛客练习赛128(ABCD、思维、01背包、树上DP、并查集)
如果新图中出现了三元环,只能是由连接now的边构成了三元环。根据题意,把存在相似的歌曲放入一个set,其他歌曲每个单独成为一个set。存在单词相同的歌曲连接一条边,使用并查集维护set和set的大小。这时,如果可以凑出一个 n-1 即可,显然 (n-1)不大于 k 的物品,全部选取。如果一点连接 now,其儿子不可连接now,否则会构成三元环。,可以把问题转化为一个容量为 x 的01背包问题。第一想法,DP,算时间复杂度,O(500。点 x 不连接now时贡献的方案数,),超时,需要优化。原创 2024-09-18 15:43:32 · 1101 阅读 · 0 评论 -
牛客周赛 Round 59(思维、构造、数论)
当 n为奇数时,任意点(x,y)需要的操作一的数量为:对角线上 0 的个数 + (全部 1 的个数为 X - 对角线上 1 的个数)当 n为偶数时,任意点(x,y)需要的操作一的数量为:对角线上 0 的个数 + (全部 1 的个数为 X - 对角线上 1 的个数)通过简单思考,一个序列A,任选两个元素,共有 |A| * (|A|-1)/ 2 种选择。综上,A 和 A’ 中逆序对的和为 |A| * (|A|-1)/ 2。在已知A的逆序对个数和元素个数时,可以计算出A’ 中逆序对的个数。原创 2024-09-18 17:42:48 · 1041 阅读 · 0 评论 -
牛客小白月赛100(思维、模拟、BFS、分块、三元环、并查集)
B题可以理解为所有数据为一组,C题只需要根据 b 数组对 a 数组进行分组,再分别判断即可。枚举所有三元环,同一个三元环的边加入到同一个集合中,最后判断有几个集合。故而,在一定范围内,枚举每个扫雷能力需要的时间取min即可。从起点开始BFS,记录对于起点的相对位移(只记录正方向)。),相对位移为(x, y),则 “我” 的坐标为(X。使用一个flag,记录三种状态,分别处理即可。+ y),“另一个我”的坐标为(X。的时间,把 m 提升到。根据题意,模拟翻倍即可。的时间,扫过全部的区间;原创 2024-09-10 19:26:26 · 1169 阅读 · 0 评论 -
[补题篇] Codeforce 1417D (思维题)
题目链接:传送门~~题目大意给出一个长度为 n 的序列 a,你可以进行 3 * n 次操作,操作为:使得 a[i] = a[i] - x * i, a[j] = a[j] + x * i, 1 <= i , j <= n , 0 <= x <= 1e9操作完以后,使得a原创 2020-09-30 13:54:58 · 231 阅读 · 0 评论 -
CodeForces 1486E Paired Payment (最短路变形)(Dijkstra)
题目大意:一个无向图,有n 个点和 m 条边,每条边的权值为 w.规定,每次要走两个节点,代价为 (Vala + Valb) 2.输出到达每个点的最小代价,如果无法到达就输出 -1.思路:很明显,和最短路的模板题相比,我们需要多记录一条边。观察发现,这个题内边的权值较小,我们可以用边权作为一个维度来记录多出来的一个边。dis[0][x] 表示第二条边到达 x 点的最小代价,这也就是 x 点对应的答案。dis[w][x] 表示通过边权 w 的边到达 x 点的最小代价。细节看代码。代码#原创 2021-02-28 00:34:49 · 259 阅读 · 0 评论 -
【每日一题】codeforces 1348D (1900) (贪心)
每日一题,坚持使我强大今日份快乐:codeforces 577B 传送门明天份快乐:codeforces 1348D 传送门 (感觉给自己挖了个坑)题目大意刚开始有一个细胞,质量为 1。每天白天,可以选择 x 个细胞进行分裂。一个质量为 m 的细胞可以分裂为两个质量为 m / 2 的细胞。每天晚上,所有的细胞质量都会加一。问:最短需要多少天以后,细胞的总质量为 n。分析这个题就贪心...原创 2020-05-23 23:57:42 · 306 阅读 · 0 评论 -
排序训练的G到J题
G题:#include <bits/stdc++.h>#include <vector>#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <set>#include <stack>#define ll long long#define ch原创 2020-07-11 22:43:58 · 237 阅读 · 0 评论 -
【每日一题】codeforces 20C(1900)(最短路之Dijkstra算法)
想她一次就背十个单词,当我英语过六级后,我就去告诉她,我很在意她每日一题,坚持使我快乐今日份快乐:codeforces 20C 传送门明天份快乐:codeforces 20C 传送门题目大意给出一个无向图,有 n 个节点,m 条边,第 i 条边的长度为wi问:从 1 到 n 号的最短距离分析这是一个赤裸裸的最短路的题...原创 2020-05-21 17:18:04 · 608 阅读 · 0 评论 -
Codeforces Round #697 (Div. 3) 全题解
这次DIV3 ( ~~太卷了~~ )太棒了~~~A题B题C题D题E题F题G题A题题目大意判断一个整数 n ,是否存在大于 1 的奇数因子思路判断 n 是不是 2 的整数幂即可AC代码#include <bits/stdc++.h>#include <vector>#include <iostream>#include <cstring>#include <algorithm>#include <queue>#i原创 2021-01-27 00:18:40 · 215 阅读 · 0 评论 -
UVA - 127 “Accordian“ Patience (模拟链表)
题目大意把52张牌从左到右排好,每张牌自成一个牌堆。当某张堆牌的堆顶牌与它左边第一堆或者左边第三堆的堆顶牌匹配时(花色或者点数相同)时,就把这张堆顶牌移到与它匹配的那堆牌上面。移动时要满足的规则:当牌堆之间出现空隙时要立刻把右边的所有牌堆左移一格来填补空隙。如果有多张牌可以移动,先移动最左边的那张牌。如果即可以移一格也可以移三格时,移动三格。按顺序输入52张牌,输出最后牌堆数以及各牌堆的牌数。分析先分析移动牌的过程,很明显后移进来的牌会作为这堆牌的堆顶,也就是后来者居上,我们可以用堆栈来原创 2021-01-20 18:15:12 · 369 阅读 · 0 评论 -
【每日一题】codeforces 577B(1900)(抽屉原理 and DP)
每日一题,坚持使我快乐今日份快乐:codeforces 577B 传送门明天份快乐:codeforces 1348D 传送门 (感觉给自己挖了个坑)题目大意:给 n 个数,问是否能找到一个子序列使得他们的和可以被 m 整除分析如果这是一个数据规模比较小的题,直接 DP 就可以过。我们可以利用抽屉原理来消减数据范围。抽屉原理:如果 5 个抽屉放 6 个东西,那么肯定最少要有一个抽屉放两个或更多的东西抽屉原理在取模计算的时候有很大的意义,给个实例来理解这个eg: n = 7, m.原创 2020-05-22 16:02:51 · 1118 阅读 · 0 评论 -
题解
A题题目大意:数 acm 出现的次数,语文题思路: ~~~经常有人问Q学长,ACM是什么,有什么意义。每当这个时候,Q学长就会说,大概是一个逼格很高的比赛吧。ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由国际计算机学会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发原创 2020-12-17 23:51:53 · 1466 阅读 · 0 评论 -
[补题篇] Codeforce 1417C (伪DP)
题目链接:传送门~~题目大意给一个长度为 n 的序列a,并且每个数的范围为 1 <= a[i] <= n.定义 k 值为:在序列 a 中所有长度为 k 的子串中都存在的最小数,如果没有这样的数,此时的 k = -1.问:给出 1 到 n,所有 k 对应的取值。思路对于相同的数字 x,我们统计相邻两个 x 之间的长度L,那么,x 可以是 L 到 n的所有K值。同时,我们要统计第一次 x 到左边界的长度和最后一个x到右边界的长度。现在问题就是如何快速的算出这个长度L (当时就是被卡到原创 2020-09-29 23:06:08 · 197 阅读 · 0 评论 -
【每日一题】codeforces 5C (括号匹配 + dp)
每日一题,坚持使我强大今日份快乐:codeforces 5C 传送门明天份快乐:codeforces 547B 传送门题目大意给出一个只有 ‘(’ 和 ‘)’ 的括号字符串,问这个括号字符串的最长匹配子串的长度和出现次数括号匹配的规则:( ) , (()) , ()() 和 (()()) 都是匹配的字符串,他们互相嵌套得到的字符串也是匹配的换个说法:在一个括号字符串中不断删去一对括号,并且不断构成新串。如果最终字符串被删完,则就是一个匹配的字符串。eg:(()(())) →→ (.原创 2020-05-27 01:33:35 · 609 阅读 · 2 评论 -
【每日一题】codeforces 448C (分治)
每日一题,坚持使我强大今日份快乐:codeforces 448C 传送门明天份快乐:codeforces 1358D 传送门题目大意有 n 块紧挨的栅栏,每块栅栏的高度为 a[i], 宽度为 1。现用一个宽度为 1 的刷子,给这 n 块栅栏刷漆。可以横着刷,也可以竖着刷,可以重复刷,但必须刷在栅栏上。问:最少要刷多少次。分析这个题用分治法解决,先来简单的说一下分治。分治,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题.原创 2020-05-29 01:14:04 · 1840 阅读 · 0 评论 -
codeforces 1478D Nezzar and Board(裴蜀定理)
题目链接在这里 ~~题目大意给一个数组和一个 k,数组内有 n 个数,可以进行无数次操作。每次选择两个数 x 和 y,得到一个新的数 2 * x - y,把这个数加入到数组里边。问:是否可以得到数字 k 。裴蜀定理这里引用百度百科的解释:裴蜀定理(或贝祖定理)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x原创 2021-02-09 17:05:57 · 205 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2)(A - E)
这次的D题和E题真的很妙啊~~ (都是比赛结束以后学的)A题题目大意有 n 个数字显示器,最初每个显示器都显示相同的数字,并且从 0 到 9 不断滚动。你可以选择在合适的时候暂停其中一个,接下来与其相邻的显示器滚动一个数字后依次暂停。如果显示器 x 在显示数字 5 的时候暂停,与 x 相邻的两个显示器a 和 b 会滚到 6 并且暂停。a 和 b 暂停后,a 的另一侧的显示器会滚动一个数字 7 后暂停… 依次类推,直到所有显示器暂停。问:这 n 个显示器都暂停滚动后能显示最大的数字是什么。思路:我们原创 2021-01-13 22:22:42 · 183 阅读 · 0 评论 -
ldu 4584 成为王的痛苦 (dp)
题目大意一把宝剑 n 个槽,槽上可以镶宝石。有 m 个宝石(m <= n, n <= 1500),对于第 i 个宝石,镶在第 j 个槽上会得到 a[i][j] 的美丽值(可能为负数),并且要满足:对于 i < j, 编号为 i 的宝石所在的凹槽的编号一定要小于编号为 j 的宝石所在的凹槽的编号。问:把这 m 个宝石镶嵌完以后,得到的最大的美丽值是多少。思路读完题第一感觉 DP。设:dp[i][j] 表示第 i 个宝石镶嵌到第 j 个槽上后的最大的美丽值。则: dp[i][j]原创 2021-01-26 15:24:19 · 93 阅读 · 0 评论 -
【每日一题】codeforces 574B (单调栈)
每日一题,坚持使我强大今日份快乐:codeforces 547B 传送门明天份快乐:codeforces 448C 传送门题目大意有 n 个小熊站成一排,每个小熊都有一个高度 ai。对于一个区间 [ L,R ],定义该区间的 strength 值为:该区间的最小值。问:对于相同长度的区间 strength 值中的最大值为多少,从 len = 1 开始输出。分析我们正常的思路一般都是,先确定区间,再去找 strength 值,再更新 strength 值中的最值。本题的数据规模为 2e.原创 2020-05-28 01:30:16 · 480 阅读 · 0 评论 -
【每日一题】洛谷 P1219 (八皇后 + DFS + 回溯)
每日一题,坚持使我强大今日份快乐:洛谷 P1219 传送门明天份快乐:codeforces 5C (括号匹配) 传送门题目大意在 n * n 的棋盘上放置 n 个皇后,使得她们不能相互攻击,问一共有多少种方案,并输出前三组方案的具体坐标。皇后会攻击和她在同一行,同一列和同一条对角线上的其他皇后,也就是说,任意两个皇后不能共线。分析先解释一下输出三组坐标的方法:拿一个简单的 4*4 的样例来看,如图这是四皇后的一种方案,第一列的皇后的横坐标为 2 ,第二列的皇后的横坐标为 4 ,.原创 2020-05-26 01:18:25 · 989 阅读 · 3 评论 -
2016年天梯赛模拟题集
今天下午有点事没及时把代码整理出来,我的锅我的锅 (╥╯^╰╥)2016年天梯赛模拟题集L1 and L27-1 N个数求和 (20 分)7-2 比较大小 (10 分)7-3 A-B (20 分)7-4 计算指数 (5 分)7-5 计算阶乘和 (10 分)7-6 简单题 (5 分)7-7 跟奥巴马一起画方块 (15 分)7-8 查验身份证 (15 分)7-1 N个数求和 (20 分)7-2 比较大小 (10 分)7-3 A-B (20 分)7-4 计算指数 (5 分)7-5 计算阶乘和 (10 分)7-6原创 2021-03-09 20:03:17 · 950 阅读 · 1 评论 -
【每日一题】codeforces 1358D (尺取法)
每日一题,坚持使我强大今日份快乐:codeforces 1358D 传送门明天份快乐:codeforces 459C 传送门题目大意在一个神奇的地方,这里有 n 个月份,第 i 个月份有 a[i] 天。 在这里每个月份的第一天会得到 1 点价值,第二天会得到 2 点价值……依次类推到这个月份的最后一天。问:有个人在要这里连着待 x 天,最多可以获得多少价值。分析这个题用尺取法就很合适,我们先来探讨几个问题。first如果一个月有 60 天,在这个月份里待 5 天的话,我们肯定是选.原创 2020-05-29 18:54:23 · 414 阅读 · 0 评论 -
【每日一题】codeforces 463C (1900) (数学)
每日一题,坚持使我强大今日份快乐:codeforces 1348D 传送门明天份快乐:codeforces 463C 传送门题目大意一个n*n的棋盘上,每个格子都有一个价值,现在在棋盘上放置两个主教(象),每个主教都可以攻击其所在对角线上的所有点,并获得起价值,但是两个主教不能攻击同一个格子。问:如何放置两个主教才能获得最大价值,这两个点在哪,最大打价值是什么。分析如果了解过国际象棋的规则就会很简单,国际象棋的棋盘是黑白交替的,每方有两个主教,分别在黑格和白格上。 &nb.原创 2020-05-25 00:39:45 · 480 阅读 · 0 评论 -
CodeForces 1512G Short Task (数论)
题目链接:这里~~题目大意定义:d(x) 为 x 的所有因子和。eg : d(6) = 1 + 2 + 3 + 6 = 12。有多次询问,每次查询给出一个数 c,输出满足 d(x) = c 的最小 x,如果不存在输出 -1。思路之前写过一个题是统计一个数的质因子和,是欧拉在欧拉素数筛选法上做文章。这次这个题用到的统计方法就是一个退化的欧拉素数筛选法。AC代码#include <bits/stdc++.h>#include <vector>#include <.原创 2021-04-12 13:46:03 · 618 阅读 · 0 评论 -
2020年团体程序设计天梯赛-总决赛 (L1 - L2)
读假题好难受ㄒoㄒL1-1 嫑废话上代码 (5 分)L1-2 猫是液体 (5 分)L1-3 洛希极限 (10 分)L1-4 调和平均 (10 分)L1-5 胎压监测 (15 分)L1-6 吃火锅 (15 分)L1-7 前世档案 (20 分)L1-8 刮刮彩票 (20 分)L2-1 简单计算器 (25 分)L2-2 口罩发放 (25 分)L2-3 完全二叉树的层序遍历 (25 分)L2-4 网红点打卡攻略 (25 分)L1-1 嫑废话上代码 (5 分)思路签到题AC代码#include <io原创 2021-03-16 16:30:18 · 1204 阅读 · 0 评论 -
位运算:找出来数组中落单的两个数
题目大意每次给你 2 * n + 2 个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字并升序输出。思路最简答的想法,排序,然后找出只出现一次的数,不再叙述。来说一说用位运算怎么解决:假设这两个不同的数 x2 = 1100101 和 y2 = 1010001。观察标记出来的位置。易知,对于两个不同的数,一定有一个位置 pos 对应这两个数在二进制下是不同的。 上边的例子中,pos = 3我们这里先讲两个前导知识:0 ^ x = x,x 异或 0 的结果还是 xx ^ x原创 2021-03-29 13:53:20 · 451 阅读 · 0 评论 -
Codeforces Round #708 (Div. 3) 全题解
A. Meximization原创 2021-03-20 17:03:44 · 194 阅读 · 0 评论 -
CodeForces 1509C The Sports Festival (记忆化搜索 or DP)
题目链接~~~题目大意思路本来以为是贪心,后来发现并不能贪心,这里好好想想01背包和贪心的区别。看数据范围 n 最大到 2000,那必然是 n2 的DP了。发现区间DP自己也不会写,但是想到了一个反过来的思路。对 a 数组排序,我们考虑最后一步,增加的价值必然是 an - a1,那这一步之前只有两个状态只可能是两个状态:区间(1, n-1)或者区间(2, n)。对于区间(1, n-1),他的价值必然也是 an-1 - a1 + 区间(1, n-2)或者区间(2, n-1)。依次套娃。并且原创 2021-04-19 20:21:02 · 186 阅读 · 0 评论 -
2016年天梯赛决赛题集
注意题干隐含的条件7-1 正整数A+B (15 分)7-2 I Love GPLT (5 分)7-3 出租 (20 分)7-4 判断素数 (10 分)7-5 是不是太胖了 (5 分)7-6 一帮一 (15 分)7-7 到底是不是太胖了 (10 分)7-8 Left-pad (20 分)7-9 红色警报 (25 分)7-10 列车调度 (25 分)7-11 互评成绩 (25 分)7-12 愿天下有情人都是失散多年的兄妹 (25 分)7-1 正整数A+B (15 分)思路输入一行字符串,再处理AC代码原创 2021-03-18 21:24:31 · 1905 阅读 · 0 评论