- 博客(29)
- 收藏
- 关注
原创 2024牛客暑期多校训练营1 I.Mirror Maze(题解)
给一个n×m的二维char数组,由4种镜子组成,‘\’, ‘/’, ‘-’, ‘|’,镜面反射规则就是根据光线的方向和镜面的角度符合直觉的反射,然后有多组询问q≤106,每次给定起始位置和光线方向,求该光会经过多少面不同的镜子的反射。
2024-07-17 22:36:03
920
原创 2021杭电多校10 D.Pty hates prime numbers题解
组队赛选的这场,遗憾爆0,被对面队打爆,赛后狠狠补题。这道题的题解,以及网上搜到的其他题解看了好久没看懂,在问了队里大腿多次后,总算磨出来了,这里讲一下我的理解。
2024-07-13 10:16:12
757
原创 天津大学并行计算实验四:多级并行化计算矩阵幂
其实在实验三能顺利做完,有了代码的框架之后,再做实验四其实没什么难度了,只需要稍微改点东西。不过这里我怀疑我的代码也存在一些问题,因为最终分析加速比的时候,实验测出来的实验四的效果不如实验三。所以这里只能给大家仅供参考了,也欢迎大家指出我的问题到底在哪里。注意:代码等仅供同学们加深对课程知识点的理解,严禁抄袭,要是查重(不确定有没有)什么的被老师抓到了后果自负这次实验的算法主体上是在实验三的代码基础上稍加改动,可以先去看看文章最前面的实验三传送门。
2024-05-17 10:56:40
1481
原创 天津大学并行计算实验三:多进程计算矩阵幂
天津大学并行计算实验三:多进程计算矩阵幂,当初我就是写这个实验写得绝望了,才激发我写下这些攻略,网上找不到一点,GPT也写不了一点。
2024-04-22 19:16:41
1356
原创 天津大学并行计算实验二:多线程计算矩阵幂
来到并行计算实验二了,稍微上了点强度,网上没找到合适的代码,最后还是自己根据实验一的代码改出来了。这里着重讲一下代码的理解,希望同学们自己看懂后也会改的来,并且最好把我的矩阵划分方式改成按行分配线程。资源传送门免责声明:注意:代码等仅供同学们加深对课程知识点的理解,严禁抄袭,要是查重(不确定有没有)什么的被老师抓到了后果自负仿照实验一的代码,给线程分配任务还是通过结构体的方式,不过实验一里每个线程是计算级数的一部分,而本实验中,每个线程是计算矩阵的一部分。
2024-04-22 18:36:58
1218
原创 F. Turtle Mission: Robot and the Earthquake (codeforces 923 div.3)(bfs)
看到题目,首先很容易想到这是一个BFS广搜的题,假如去掉石头会移动这个条件,那么这就是一个BFS裸题,直接把起点加入队列,每次往三个方向拓展,判断是否有石头再加入队列,队列里第一个到达终点的结点就是最短距离。) 也在每秒移动,又由于地图的左右是不循环的,所以如果BFS过程中,机器人到达了最右边一列,我们再考虑回去原本的石头情况,那么接下来机器人只需要随着石头向上走,过一段时间总能够到达右下角点。在机器人移动的同时,地图上的石头每秒也往上走一格,并且也可以穿过边界循环到达另一边。
2024-02-28 14:03:08
1178
2
原创 启发式合并(树上启发式合并)
启发式合并是一种奇妙的暴力,一般问题是需要求若干个集合之间合并后的信息。普通的暴力就是直接按照题意模拟,对要求合并的集合进行合并。而启发式合并多了一个步骤,即每次合并时将数量较少的集合合并到数量较多的集合,因为添加元素时至少要对一个集合进行遍历,所以自然而然会想到对集合大小较小的集合进行遍历。
2024-01-22 15:42:50
752
原创 AtCoder ABC335 E - Non-Decreasing Colorful Path(拓扑排序、并查集)
本题注意到可以缩点的性质后,对边进行离线,缩点后重新建图,并且要留意缩点前后的关系,而且拓扑排序时入队后结点的入度要更改,防止同个缩点多次入队。
2024-01-11 20:37:23
1231
原创 D._Small_GCD题解(codeforces 911 div.2)
新建一个vector,进行因数分解,统计出所有的因数数量,那么假如枚举的第二个数是它,它对距离的贡献,就是之前有了的这些因数的数量,乘上现在这个数到右端点的距离,所以遍历这个数的因数,记为。然后我就去翻那道题的代码,顺便学了下这个小知识点,把代码一贴。的取值,容易发现,题意就是求数组中所有的三元组的较小两个数的gcd求和。从暴力的角度来看,可以两层for循环枚举i和j,求一次gcd,并且乘上。这样处理出所有的因数的贡献和,最后一步利用容斥,将因数的贡献。我维护不来,想照猫画虎也用容斥处理,但是失败了。
2023-11-27 17:56:46
606
原创 G.Unusual Entertainment题解(codeforces 909 div.3)【dsu on tree/树上启发式合并】
加上时间戳,给结点重新赋值,重新得到一个数组,记录每个结点开始的位置和子树结束的位置,就可以让分散的子树的节点序号,转而成为新的数组中连续的一段。然后这题我看了赛后的题解看半天没看懂,最后从排行榜里面发现一个大佬的代码简洁易懂,而且思想更加常见,下面我就来讲一下他的做法。由于题目是跟子树有关,每次询问都是问一个子树的信息,所以可以考虑一种常见的操作,就是利用。首先对所有的询问离线,在重新建立好这个排列后,考虑将问题拆分,询问。范围的数的个数,如果为0,代表没有输出NO,否则输出YES。
2023-11-18 21:49:03
308
1
原创 2021 ICPC 上海 H(Kruskal重构树)【Life is a Game】
本文介绍了2021icpc上海H题的做法,其中用到了克鲁斯卡尔重构树等知识点
2023-11-06 23:32:12
98
原创 【百度之星2022】星球联通/原地传送
新的百度之星就要开始了,所以来补一下往年题,并分享一些刚刚补好的题的题解,也祝愿大家能够取得一个好成绩。
2023-09-21 19:24:35
196
2
原创 2023牛客多校(九)G-Non-Puzzle:Game(线性基)
先来介绍一下线性基,学过线性代数的会比较清楚什么叫基,就相当于原本有一个大集合,然后你从中选取最少的一些元素,使得可以用这些小元素来表示出原本大集合中的任意元素,就跟代表一样。大部分时候线性基都是跟异或相关的,这里就介绍异或中的线性基。异或中的线性基,用一个数组表示二进制的每一位是如何表示出来的,线性基里的元素都是原来集合中的元素异或得到的结果。线性基的求法可以去洛谷的模板题里面抄一下板子,下面放一下我的板子。ll p[64];//表示用某个数能表示出二进制第几位~i;i--){
2023-08-15 10:34:48
100
1
原创 E-Sequence题解 (2023牛客暑期多校训练营6)
所以问能否将区间划分为k段,就可以去找整个区间内最多有多少互不影响的偶数区间,那么这种区间的数量就等于单独的0作为一段,以及有一个1的话,一直找到它右边的另一个1,把整个看成一段。所以提前扫描数组,记录其中1的位置,然后对于查找的区间,去二分查找区间内最左边和最右边的1的位置,然后遍历这些1统计夹在中间的0的个数。思路2:同样是找偶数区间,不过找的方法更高明一些。题意:给定一个数组,有若干次查询,每次查询给出l,r,k表示查询的区间范围,问能否将查询的区间划分成k段子区间,并且每个子区间的区间和都是偶数。
2023-08-05 11:02:31
77
1
原创 C++树形dp经验总结(换根dp,点覆盖问题,含例题City Upgrading)
本文介绍了作者最近学习树形dp的经验,并记录了一些树形dp经典问题的代码以及讲解。
2023-07-19 18:28:28
373
原创 C++状态压缩DP(例题:吃奶酪,Booster)
本文介绍了作者的状压dp心得体会,以及状压dp的经典例题吃奶酪的过程分析,以及如何理解状压dp的位运算过程,看了这篇文章,妥妥拿下求经过各个点的最短距离时间这种类型的问题!
2023-07-15 10:57:04
306
1
原创 [CF788A] Functions Again(动态规划)
本文介绍了一道与求最大区间和类似的进阶动态规划问题,求差分数组的最大正负交替区间和,文章用两种方法解决这个问题,一个是二维dp,一个是开两个dp数组交替递推,详情请点击观看。
2023-07-13 09:34:50
112
1
原创 【CF771B】Bear and Different Names
第二种思路就是先令所有的名字不同,再根据题目中的NO,把NO的区间里制造出2个相同的名字。于是我们可以将区间的右端赋值为区间的左端,那么对于下一个区间来说,左端右移一格,我们制造的那个相同的前一个左端就不会下一个YES区间造成影响。第一是先让所有的名字相同,然后根据题目中的YES,再把YES的区间里面的名字赋值成各不相同。我一开始是这么想的,但是后来发现不能这么简单,因为区间里的相同名字有要求,如果区间重叠,相同的名字要跟不同的区间中的名字某一个相同。要求你构造出符合条件的 n 个名字。
2023-07-12 19:54:30
103
1
原创 C++Tarjan算法——图论求割点(附例题)
对u相邻的结点进行遍历,设这个点为v,如果没有访问过v,就对它dfs,dfs(v,anc),因为v是u出发到达的点,所以它们的根相同,都是anc。一,一个点是根的时候。那么这样的根是割点,需要它至少有2个子树,也就是至少有两个顶点与它相连,那么如果这个点去掉,它的两个子树就分开了,所以是割点。代码里的t代表时间戳,从0开始,用来记录dfs遍历的顺序,cut数组记录点是否为割点,整个算法总体还是比较短的,直接背就完了,下面放一道洛谷P3388的求割点模板题。给出一个 n 个点,m 条边的无向图,求图的割点。
2023-07-12 10:40:26
615
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人