02 2019 档案
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3085 每一秒,对男孩和女孩同时经行bfs,男孩走3步,女孩走1步,走过的地方标记一下,同时判断与幽灵的曼哈顿距离。
阅读全文
摘要:我们用sum数组来表示序列S的前缀和,那么在每次的回答中: 1 S[l~r]有偶数个1,等价于sum[l-1]与sum[r]的奇偶性相同。 2 S[l~r]有偶数个1,等价于sum[l-1]与sum[r]的奇偶性不同。 我们有如下传递关系: 1.若x1与x2奇偶性相同,x2与x3奇偶性也相同,那么x
阅读全文
摘要:题目链接:银河英雄传说 边带权并查集,舰队在合并的过程中带着它下面的舰一起走,d[x]记录战舰与fa[x]战舰之间的权值,在路径压缩的时候, 把d[x]更新为从x到树根的路径上得到所有边权之和吗,d[x]既保存了位于x之前的战舰数量。 当接收到一个Cx y指令时,分别执行get(x) ,get(y)
阅读全文
摘要:题目的大致意思是给一个数组a,大小为n(可能有正数,负数和0可以进行如下两种操作: 1.选择两个位置i,j(i<j)然后 a[j] *= a[i],把a[i]删除。 i 2.选择一个位置i,把a[i]删除a[x] 操作2至多只能用一次。 最终结果是通过这两个操作,n-1次操作,把数组中的数字处理到只
阅读全文
摘要:题目 "程序自动分析" 刚学并查集做的第一题,数的范围比较大,离散一下
阅读全文
摘要:洛谷有个题目弱化版 P1032 字串变换 原串st变到目标串ed,最少的步数,用bfs求解 需要一个map记录某个串是不是被搜到过,如果已经搜过了就不再继续搜 。 对于我们当前从队列头部取出来的字符串,我们依次枚举它的位置i (0<=i<len),然后在枚举所有变换手段 如果当前从队列里取出的字符串
阅读全文
摘要:题意是构造一个字符串,长度为n,和s1,s2不同的个数均为t,与s1和s2不同的个数均为t说明和它们相同的个数为n-t.那我们就根据题意构造出和它们相同个数为n-t 什么情况下会无解呢,我们用sum表示s1和s2相同的字符个数,如果sum小于n-t,那么对应输出的字符串还需要和s1相同的字符的个数为
阅读全文
摘要:先对箱子bfs,箱子想要推到那个位置,我们人就必须移动到箱子的后面去推它,因此每次推箱子,需要再对人bfs来判断人能不能走到推箱子需要的地方以及最少的步数, bbx,bby就是箱子要推到的位置,ppx,ppy就是人推箱子需要走到的地方,cur.px,cur.py是当前人所在的地方,我们需要再进行一次
阅读全文
摘要:设从点 x 出发能够到达的点构成的集合是 f(x),从点 x 出发能够到达的点,是从 x 的各个后继节点 y 出发能够到达的点的并集,再加上点 x 自身 。 比如从2出发可以到达点5 8 9,则f(2)=f(5)Uf(8)Uf(9) 先按照拓扑排序算法求出拓扑序,然后按照拓扑序的倒序进行计算 因为在
阅读全文
摘要:这题看别人题解的 这题说可以转换成数据备份。这题可以把一段同号的数并成一个数,那么就变成了一个正负交替的序列,然后把头尾的负数去掉。然后就是把所有的正值都加起来,并统计正数的段数cnt,如cnt<=m,那么这些整数的和就是答案 如果cnt>m,那我们就要不断地去掉一段,直到cnt=m 先把所有数的绝
阅读全文
摘要:第一种 int get_minstring(char s[]) { int n =strlen(s); int i = 0, j = 1, k; while (i < n&&j < n) { for (k = 0; k < n&&s[(j + k) % n] == s[(i + k) % n]; k
阅读全文
摘要:单调队列有两个性质 队列中的元素其对应在原来的列表中的顺序必须是单调递增的。 队列中元素的大小必须是单调递*(增/减/甚至是自定义也可以) 单调队列与普通队列不一样的地方就在于单调队列既可以从队首出队,也可以从队尾出队。 就拿样例来谈谈,设以最小的为标准。 下文中我们用q来表示单调队列,p来表示其所
阅读全文
摘要:P1823 [COI2007] Patrik 音乐会的等待 题解:维护一个单调不递增的栈 首先说明一下:由于一个人左边可以看到一些人,右边可以看到一些人,可以我们仅从一边考虑,对于一个人,我们考虑它的左边能看到多少个。两边都考虑会导致重复计算。 tot是当前栈元素的个数 对于新加入单调栈的一个元素,
阅读全文
摘要:版本1 这种适用于答案落在左半区间,一般适用于求解最小化最大值 当区间[l, r]的更新操作是r = mid; l = mid + 1;时,计算mid时不需要加1。C++ 代码模板: 版本2 这种适用于答案落在右半区间,一般适用于求解最大化最小值 当区间[l, r]的更新操作是r = mid - 1
阅读全文
摘要:悬线法,刚学的 转移方程 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int maxn = 1e3+ 5; int n, m; int a[maxn][maxn]; /
阅读全文
摘要:题解:我们先得到两个楼之间的距离,D[i]表示第i栋楼和第i+1栋楼之间的距离,我们要选出最小的k个数,然后就有两种情况 1.选择了D[i],那么D[i-1]和D[i+1]都不能选择了2.选择了D[i+1]和D[i-1],然后无法选择D[i]. 既要么选D[i]不选D[i-1]和D[i+1],要么选
阅读全文
摘要:首先感谢 https://www.cnblogs.com/grandyang/p/4475985.html 这篇文章,给了我很大帮助,解释的很详细。 最近在学习lyd的算法竞赛书,学到求最长回文串的时候就看到了O(n)复杂度的Manacher算法,书上给的是hash+二分做法,复杂度为O(nlgn)
阅读全文

浙公网安备 33010602011771号