随笔分类 - c++——算法
摘要:题意: 多组样例,对于每组样例,先给出一个n和m,n代表点的个数,m代表询问的个数,接下来n行,每行3个数(xi,yi,wi),分别代表第i个点的坐标和权值,对于每组询问,首先给出一个坐标,让我们求出这个点到n个点中的值的最大值,这个点到第i个点的值定义为两点曼哈顿距离和i点权值的较小值。 题解:
阅读全文
摘要:题目; 多组样例,每组样例先给一个n和H,分别代表技能数和boss血量,接下来对于每个技能都有两行输入,第一行给出两个数分别代表技能使用时间t[i]和技能持续时间len[i],接下来一行给出len[i]个数,分别代表每一秒可以对Boss造成的伤害,我们使用一个技能后,在使用该技能期间会对Boss造成
阅读全文
摘要:题目: 给出长度为 n 的全排列 p , q ,还有一个由 p , q 组成的长度为 2 × n 的 S 。现在有一个空序列 R ,每次可以从 p 或 q 的开头取出一个数字并加到 R 的末尾,问有多少种取法使得 R = S , n<=3e5 思路: 对于s 的一个位置, 就可能2个位置,来计算贡献
阅读全文
摘要:题目; 给你一个长度为n的数组,每个位置上有一个野怪,野怪的攻击力和血量已知,你有m个技能,每个技能有三个值,一是可以击败的怪物,且怪物死后会攻击与它相邻的怪对于左边的怪伤害是血量-l,右边的怪时血量-r,如果大于该怪物的防御力即可击败这个怪物,问如何操作使得所有怪物至少被击败一次 题解: 首先对于
阅读全文
摘要:题意: 给定一棵树,nn 个结点。根为 11,所有的结点只能走向其父亲结点。 有 qq 次询问,每次询问给出 33 个结点集合 A,B,CA,B,C。问树上有多少点满足如下条件: 该点可以从集合 AA 中的至少一个结点到达。 该点可以从集合 BB 中的至少一个结点到达。 该点可以到达集合 CC 中的
阅读全文
摘要:题目: 对序列 a,回答 q 次询问: 给定长度至少为 4 的区间 [L,R],在区间内选择 1对 (ai,aj)(L≤i<j≤R)可以获取分数 (ai+aj)(ai−aj) ,计算选择 2 对可以获取的最大分数之和。 注意:你选择的 2 对共 4 个数中不能有重复的位置 思路: 首先可以想到 选取
阅读全文
摘要:题目: 给定一个序列 a1,a2,…,an,共有 q 次操作,每次操作有两种类型: 操作1(1,l,r) 表示复制区间 [l,r] 的内容,在区间 [l,r]的末尾处插入这段内容。 操作2(2,x) 询问当前 ax 的值。 只需要输出所有操作2答案的异或和即可,保证操作1的数量不超过 20000次,
阅读全文
摘要:Virtual Judge (vjudge.net) 题目: 题目大意:首先说明一个性质,A 表示一个数组,B(A)表示把这段数组进行一遍冒泡排序的下沉操作,就是把大数沉底。然后题目给我们一个长度为n的数组,给我们q个询问,每个询问包含一个l,r 问我们将[l,r]区间内的数变成具有上述性质的区间至
阅读全文
摘要:题目: 给定长度为 n 的排列 p,令 Ai 表示 i 左边比 pi 小的数字个 数,Bi 表示 i 右边比 pi 小的数字个数,Ci = min(Ai , Bi)。 有 m 次独立的询问,每次询问给定 u 和 v,问如果交换 pu 和 pv, ∑n i=1 Ci 的值将会是多少。 n ≤ 1000
阅读全文
摘要:题目大意 • 求 n 个点组成的每个节点都满足左右子树大小相差至多 1 的二叉树个数.• 0 ≤ n < 264.• 关键词:计数 2022-暑假 - Virtual Judge (vjudge.net) 思路: 直接用dfs+记忆化搜索是爆空间和时间的(虽然思路好想) 对这个式子进行取log 处理
阅读全文
摘要:应用: 解决方便加但是不方便减的情况,反之亦然 思路: 更具莫队的老排序,来排 然后对于 l.pos==r.pos 直接暴力做就行了 对于 这个区间的l.pos!=上面那个区间的, 就要把L,R重新弄一个空区间 L=R[LSTPOS]+1,R=R[pos]; 特别注意 r 是<R[pos], 你的d
阅读全文
摘要:题目大意: 一个数列,每一次可以跳P以内的距离,数列是有正有负,问跳到后面去的最大值, 有Q次询问,问 leve i, 每次只能跳 i 的倍数, n 10^6, q为 10^6次放 由简单到困难的思想 先考虑 leve 1的情况 显然这个东西可以用单调队列优化DP 而其他leve k可以 要弄的数
阅读全文
摘要:题意: 给一个字符串 s,问能否翻转 s 的一个区间使 s 回文。 思路: 他是要翻转某个区间,然后让整个字符串为回文串 因此可以先把左右2边相同的部分删除 对于中间的部分是一定要进行翻转的 贪心直接暴力(因为起始点是一定不行要翻转的),从l开始向右边进行枚举r,暴力翻转,判断是否字符串为hash
阅读全文
摘要:核心: 同 扩宽KMP, 利用已知信息阴影来 进行更新. 思路: 利用已知的东西来跳过,从而优化时间复杂度 首先预处理 每一个字符2边加上'#',开头加上'$', 任意没有在字符串中出现过的, 2个关键因素 mid,和p[],半径和 目前最大的 R 如果i<r,那么久可以来优化时间复杂度, 更具对称
阅读全文
摘要:目的: 求字符串a的每一个后缀字串 和 目标串b 的lcp(最长的公共前缀) 核心: DP思想, 更新 i 时 利用已知信息, 阴影 来处理, 在阴影里面 O1get, 阴影外面就更新阴影 思路: 利用 公共部分(跳过)来优化时间复杂度, 2个核心数组 nxt[] (b的lcp),extend(a的
阅读全文
摘要:题目: 2022—暑假1 - Virtual Judge (vjudge.net) 思路: 暴力打表找规律 (n-4)*(n-3)*(n-2)*(n-1)/24
阅读全文
摘要:模拟退火: 核心就是通过局部最优,然后随机跳出这个局部,找下一个最优解 通过物理的那个思想 核心元素: T=2000,(一般2000-5000) rate=0.996, limt 最低T,更具题目来看(在满足题目条件的情况下,多次循环) 代码: void th() { node ans; ans.x
阅读全文
摘要:差分约束: 一系列的不等式,看有没有满足条件的解 转化为文字就是 至少多,至多多, 等等字样 要反应过来 比如 a-b>=x, 然后这个可以变化为 b-a<=-x, 用大于还是小于看题目 然后 这个东西 和 图论联系在一起 a-b>=x 相当于 a>=x+b, x就是边权值,如果相等就 2个点相互连
阅读全文
摘要:A. Common Edges time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output There is a connected graph w
阅读全文