XCPC补题
__night_
蒟蒻
展开
-
2024广东省赛 I.不等式
【代码】2024广东省赛 I.不等式。原创 2024-05-29 18:07:49 · 315 阅读 · 0 评论 -
2024广东省赛 C.DFS序
【代码】2024广东省赛 C.DFS序。原创 2024-05-29 18:02:55 · 276 阅读 · 0 评论 -
2024广东省赛 G.Menji 和 gcd
【代码】2024广东省赛 G.Menji 和 gcd。原创 2024-05-29 12:45:34 · 269 阅读 · 0 评论 -
2023年ICPC亚洲济南地区赛 G. Gifts from Knowledge
【代码】2023年ICPC亚洲济南地区赛 G. Gifts from Knowledge。原创 2024-05-09 16:41:24 · 470 阅读 · 0 评论 -
第十三届山东省ICPC大学生程序设计竞赛 J. Not Another Path Query Problem
【代码】第十三届山东省ICPC大学生程序设计竞赛 J. Not Another Path Query Problem。原创 2024-04-23 17:09:31 · 224 阅读 · 0 评论 -
第十三届山东省ICPC大学生程序设计竞赛 B. Building Company
【代码】第十三届山东省ICPC大学生程序设计竞赛 B. Building Company。原创 2024-04-23 15:59:03 · 303 阅读 · 0 评论 -
dfs模拟算概率
【代码】dfs模拟算概率。原创 2023-11-12 21:26:28 · 44 阅读 · 1 评论 -
通过随机的方式生成长度为n的01串s:每个位置为1的概率为a / b, 求s中子串“00111“个数的期望
n<5的情况输出0,n>=5的话,统计每个五连位置00111对答案个数的贡献,有n-4个这样的五连位置,所以是(n-4)*p,其中p为出现00111的概率。原创 2024-03-10 21:34:46 · 354 阅读 · 0 评论 -
原先有一个图,dfs序是1,2,...,n, 但是其中一些边被破坏,给定被破坏边后的图,求最少要加几条边,可以使图的dfs序为1,2,...,n
【代码】原先有一个图,dfs序是1,2,...,n, 但是其中一些边被破坏,给定被破坏边后的图,求最少要加几条边,可以使图的dfs序为1,2,...,n。原创 2024-01-15 21:06:00 · 466 阅读 · 0 评论 -
n个结点,每个结点有一个辣度,q次询问:结点p到辣度小于等于a(0 <= a <= 100)的结点的最短距离是多少
【代码】n个结点,每个结点有一个辣度,q次询问:结点p到辣度小于等于a的结点的最短距离是多少。原创 2024-01-15 18:43:37 · 483 阅读 · 0 评论 -
n人,第i个人的战力为a[i](1~1e9), 若a[i] >= a[j], 那么i就有可能打败j,进行n - 1次操作,每一次操作使相邻两人决斗,输的离开,赢的战力*2, 求最后有哪个人有可能留下。
思路:当一个人的战力大于等于最大的人的战力,那么肯定可以留下,因为打赢一次,战力乘2,所以最多赢31次就可以肯定他可以留下(隐含条件)原创 2024-01-14 21:01:32 · 327 阅读 · 0 评论 -
Jerry每次能向前或向后走n*n步(始终不能超过初始位置1e5),q(q <= 1e5)次询问,求向前走d最少要几次
思路:因为有走的过程不能超初始位置1e5的限制,所以不能直接用奇数最多两次,4的倍数最多两次的结论。spfa,平方数的dis为1,然后推出其他数的dis。原创 2024-01-14 15:50:56 · 385 阅读 · 0 评论 -
设F(i, j) 为以(0, 0)为左下角,以(i, j)为右上角的矩形面积,对于1 <= i <= n, 1 <= j <= m, 求F(i, j)的第k大的值
【代码】设F(i, j) 为以(0, 0)为左下角,以(i, j)为右上角的矩形面积,对于1 <= i <= n, 1 <= j <= m, 求F(i, j)的第k大的值。原创 2024-01-14 15:11:49 · 366 阅读 · 0 评论 -
给定只包含0、1、?(0或1)的串s1,当i >= 2, s[i][j] = abs(s[i - 1][j] - s[i - 1][j + 1]), 有多少个s1,使得s[n] = “1“
【代码】给定只包含0、1、?(0或1)的串s1,当i >= 2, s[i][j] = abs(s[i - 1][j] - s[i - 1][j + 1]), 有多少个s1,使得s[n] = “1“原创 2024-01-13 20:41:08 · 609 阅读 · 0 评论 -
给定n个字符串s[1...n], 求有多少个数对(i, j), 满足i < j 且 s[i] + s[j] == s[j] + s[i]?
由1、3可知a是b的前后缀,由2知b有一个周期是3,即a.size(),所以b是用多个a拼接而成的,有因为a是b的前后缀,所以a和b的循环节相同,且a,b均恰好由整数个循环节组成。循环节长度 = 字符串长度 - 最大公共前后缀长度。原创 2024-01-12 23:03:10 · 515 阅读 · 0 评论 -
给定01串s0,生成s[1...n], 满足s[i][j] = max(s[i - 1][j], s[i - 1][j + 1]), s[i].size() == s[i - 1].size()-1
如果s[0][i] == '1', 那么过(0,i)画一条斜率为-1的线,在线下方的字符全为'1',故从右往左遍历,用last变量存当前遍历过的最左的1的位置。原创 2024-01-12 15:37:58 · 372 阅读 · 0 评论 -
给定三个数a, b, c, 对于每次操作,可以使其中两个数-1,另外一个数+2(操作过程中a, b, c均为非负数),求a * a + b * b + c * c的最大值
2、当b == a + 1, 为了减小a,b的差,进行一次操作:使b - 1,c - 1,使a + 2,但是,a,b的差变为2,减少不了,故最优答案是1 * 1 + (sum - 1) * (sum - 1), 其中sum = a + b + c。3、当b == a + 2,可以转化为情况2,答案同情况2。4、当b == a + 3,可以转化为情况1,答案同情况1。1、当a == b, 可以全部转化到c。原创 2024-01-11 21:52:28 · 593 阅读 · 0 评论 -
有n件物品,每件物品价格为a[i],有m张优惠券,第i张可以在前r[i]件物品使用,可以使价格减少w[i],求买k件物品最少要花多少钱(k=1,2,3...n)
法一:线段树维护区间最小值,每次选尽可能用优惠券后的价格最小的物品,然后将该物品价格修改为无穷大(单点修改),将使用过的优惠券的影响消除(区间修改)原创 2023-11-25 18:28:43 · 381 阅读 · 0 评论 -
有n件物品(n<=13),每件物品的的花费为c[i],每个背包的容量为w,求最少要几个背包才能装下所有物品
【代码】有n件物品(n<=13),每件物品的的花费为c[i],每个背包的容量为w,求最少要几个背包才能装下所有物品。原创 2023-11-25 17:11:53 · 422 阅读 · 0 评论 -
求是否存在长度为n的排列,使得任意长度为k的连续子序列的序列和的奇偶性都相同
3、尝试构造:每组中1的个数为 (n + 1) / 2, 0的个数为 n / 2, 总共有 n / k 组,所以前k组中1的个数比0多 n / k ,所以在剩余部分0的个数要比1多 n / k 或 n / k - 1(取决于n的奇偶性)2、长度为k的窗口往右移一次,窗口中少了a[i], 多了a[i + k],所以a[i]和a[i + k]奇偶性相同,1、把奇数看成1,偶数看成0。原创 2023-11-24 00:52:19 · 337 阅读 · 0 评论 -
序列a,三种操作:使a[i] +1或-1、或/2(向下取整),求使每一个元素值相同的最少操作次数
2、考虑最终的目标值。所以题目可以转化为先对所有数进行必要的 / 2 操作,再进行加减操作,又因为目标值一定是序列(/2操作后的序列)中的中位数,所以目标值一定是a[i] 除以若干次2的结果。1、考虑操作的顺序。因为(a + x) / 2 (操作次数x + 1), a / 2 + x / 2 (操作次数x / 2 + 1),两种情况最后的结果相同,但后者操作次数小于等于前者,所以想让x变成y(x > y),最优的方法可以是。x / 2直到x恰好小于y,再加到y,或者x / 2直到恰好不小于y,再减到y。原创 2023-11-24 00:37:50 · 339 阅读 · 0 评论