- 博客(68)
- 收藏
- 关注
原创 中位数定理:小试牛刀> _ <2025牛客寒假1
(对于 点的数量为奇数,是排序之后最中间的数 ,对于点的数量为偶数的情况下,中间两个点 都可以,他俩的答案是相同的,可以简单的画图证明,或者直接抽象一点的想:假设这两个点分别为A B他们之间的距离为d,A相对于B 来说,左侧的点都减少d ,右侧的点都增加d .又因为A左侧的点的个数等于B 右侧的点,所以A B 的值相同)(为啥左边的中位数不能+1 呢,因为加1 减1 对于数值是原本的中位数的数字 距离是相同的,但是我前边的数大概率有小于我原本中位数的数值,所以我中位数-1 ,距离小的数更进了)
2025-02-05 21:03:42
337
原创 cf div3 998 E(并查集)
对于两个点 a b ,如果他们之间联通但不是直接通过 直接的一条边。那么我path 中的边,一定在我遍历e 的时候,删掉了。可以对f 进行 删边 和加边 的操作。问至少操作多少次 ,使得 f 和 g 的 点的联通情况相同(并查集的情况相同)对于 我 f 图存在边 e ,只要这个边 所连接的两个点 在g 中是不联通的,那么这条边一定要删除。现在的问题是,所有要删的边 都删除了吗》答案是 Yes.加边的数量 可以通过 连通块的数量的差值 直接计算。所以到现在为止 删边的操作 已经完成了。
2025-02-03 23:21:56
290
原创 abc 390 D(暴搜 复杂度用 bell数 证明 n 的集合的划分方法的数目)
这道题做出来和bell 数没什么关系,如果要证明复杂度那么就需要bell 数。将 长度为 N 的数组 划分为集合 有多少种不同的 异或和。
2025-02-01 23:18:50
370
原创 cf hello 2005 C小构造(很有意思,主要是要注意到 我这一位 得是一个1或者两个1)
当我们这么构造之后,已经保证了每一位都有一个1了,此时c在这一位的情况是什么,不会影响我的异或和的值了。这里直接假设c是l.但如果ans-1==l,因为我们肯定有三个数,所以c可以取ans+1。当有一个1和两个1的时候,这一位的贡献达到最大值2*一定的次幂。在[lr]中选取三个数,最大化两两异或的和。所以c可以是不同于ab的任何一个值。a相同的前缀011111…b相同的前缀100000…我们从LR第一个不同的位置开始考虑。
2025-01-20 08:56:05
167
原创 cf 996 div2 C
从左上角 (1,1) 开始,到右下角 (n,m) 结束,由 n+m−1 个单元格组成的路径已被清除。路径上的每个单元格 (i,j) 的高度 aij 都被设置为 0。可以发现,因为我只能 D 或者 R .所以我的路径顺序其实就是一种可行的顺序。我到达某一个位置,我要么通过行要么通过这一列。如果我到达这个位置之后是D,那么我通过行。=M 的情况,之后当S==0 的时候,才可以使得等式成立。n 行m 列,单元格(i j ) 的高度用aij 表示。现在我们的任务就变成 怎样以一种合理的顺序去求解。
2025-01-17 10:42:07
144
原创 abc 383 C (bfs 最短路 )D(唯一分解定理,欧拉筛)
处理 出来质数之后 ,就对两种情况直接暴力的求就可以了,(这种的复杂度我不会分析,感觉比较玄)可以采用类似 bfs 求最短路的形式,找到每个点 距离 加湿器的最近距离,统计答案。首先暴力的想,对于每一个加湿器的位置去 上下左右扩展是 n+m 的复杂度。要求 不超过n ,所以只用处理 sqrt(n) 内的质数就可以了。(因为如果是> sqrt(n) 的质数,那么相乘一定超过了n)3 说明合法的数也可以是两个质数的二次幂的乘积。9 说明合法的数是一个质数的8次幂。tt<n 的情况,为了避免 t。
2024-12-20 23:31:39
388
1
原创 abc 384 D(子数组->前缀和) +E(bfs 扩展的时候 按照数值去扩展)
(对于两个元素等于一个数字,就可以枚举一个,去查找另一个和tar 的 数值 是否存在,很常见的套路)乍一看有一点 那种bfs 求最短路的感觉,不断的把点 push 进队列,一圈一圈的扩展。如果我的s >sum 那么说明了肯定包含了一个整的区间,先对 s 取模。并且我的v 值是变化的(我扩展一个位置,那么我的v 就加上这个方格的值)但要是 我先碰到 值 较小的点,在碰到较大的点,也许就可以吸收这个点。因为我们的元素都是正数,所以S 的逐渐增大的。也就是说 我的四个方向的扩展顺序时有区别的。
2024-12-18 23:24:06
384
原创 cf EC 172 C(0->-1 的转化+区间和使用前缀和表示,化简式子)+ D(二维的信息,先对一维排序,另一维看情况分析)
这样我这个区间所有可能的合法区间的右端点都在这个set里面。每个区间的值定义为 包含我这个区间的其他所有区间都具有的额外的长度。回到排序的实质,当我到了i 这个区间,我要遍历了所有可能是我i 这个区间合法的区间。这道题 还有一个细节,就是sort 的时候,当我左/右端点相同的时候,怎么排序。还有一个问题,就是当我出现两个一样的区间的时候,我这些区间的ans 都是0.所以当按照左端点来排序的时候,当左端点相同的时候,我们右端点大的要在前面。本质上是 询问 我每一区间 合法区间中的 最近的左端点和右端点。
2024-12-03 23:12:57
301
原创 2024 ccpc 辽宁省赛 E(构造 思维?)L(二分+一点点数论知识?)
1-x 中 是a 的倍数的数字有 x/a 个。(这里我其实是算的 我的x是a 的多少倍。m ,并且我n m 都不是4的倍数。n 是4*100^p 的倍数 但是我n 不是 100^{p+1} 的倍数。如果我n 是4 的倍数,那么竖着摆放。1>对于 4 | n,或者 4 | m.我直接摆放第二种方格就可以了。当我的p 取9 的时候,是 4*1e18,那必然不会出现倍数了。2>对于我n m 都不是4 的倍数的情况。我的平年 和我的年份 具有单调性。2 ,此时虽然我的积是4 但是无法摆放的。
2024-11-30 22:41:04
506
原创 cf 988 div3 C 将一些特定的元素拿出来考虑 E(交互,考虑多询问一位,以此判断这一位的情况,类似这种交互构造字符串的,都是通过比上次只多询问1次,来确定这一位的情况)
先来思考在 一段知道01 子序列个数的段之后,我们在多询问一位,如果变多了那么这一位 是1,如果没有变那么这一位只能是0。最后我们将我们生成的01串,在和每个前缀的01 序列作比较。因为我们之前只是将增多变成这一位是1,但是可能增加的数量不对。确定每一位上的数字。当n >4 的时候,直接将奇偶相接的地方规定为 5 4 就可以了。长度为n 的二进制串,可以询问 l r 之内的01 的子序列个数。[1 n] 的排列,我们要任意相邻的数相加得到的和是合数。但是还有 奇偶相邻的地方,会出现一个奇数+偶数的情况。
2024-11-24 23:16:49
318
原创 abc 380 D(思维?)E(并查集维护信息)
K最大是 1e18 ,因为我的字符串的长度是2 ^(轮数),所以我当前递归找的这个 是对长度取log 的。对于一个位置的字符,我们考虑他是由上一轮中的那一个位置的字符转换而来。一直递归找到我在初始的字符中的位置。所以我么可以找到 这个字符 是由我一开始字符串中的那一个字符变过过来的。我每次的修改之后,我只需要查询我当前集合的左边和右边集合的颜色。根据每一个集合的l r ,我们可以求得 这个集合中元素的数量,当然我们也可以直接维护好每个集合的cnt。因为这样我们才能知道这个集合相邻的集合的信息。
2024-11-17 11:40:39
245
原创 abc378 E (取模问题的讨论,逆序对) F(树,连通块)
因为 他只对 我的子数组求和的时候取模,整体并没有取模,所以不能计算每个元素的贡献。这个M的数量就是 srsl-1 的时候 不变。else 我么要加上一个M。
2024-11-07 11:13:50
241
原创 质数的小游戏~(牛客,cf)
对于[1 n] 这些数 ,对于n 向前找到 一个比他大的最小的质数。假设这个质数=n+j。那么我下标为j+1 的位置吗,应该放 n-1 ,这样递减的放下去。我下标为N 的位置 放的是 n - ( n- j ) 保证了他们和都是 n+j 这个质数。我寻找质数的大小范围是 (a ,2*a】.因为这里面 必定存在一个质数,所以我这个质数是一定能找到的。大致的思路 就是 每一段 固定一个质数,然后这一段中的 数+下标 的和都是这个质数。这样 对于我 [1 j-1] 的位置,是我这个问题的子问题。
2024-10-30 23:11:41
536
1
原创 cf div2 979 D (修改影响的范围很小,维护改变的地方)
可以把 p 数组的 n 个数之间的 n - 1 个空挡看作 n - 1 个通道, 这个通道有两种状态, 一种是开启, 一种是关闭, 如果开启, 意味着可以交换左右两个数(只有这个通道 前面是 是 “L”,后面的是“R”,这种情况下,才是关闭的)对于【1-i 】的前缀,正常情况下 最大值因该是 i ,如果最大值>i 说明有元素要向后移动。所以我们的第i 个通道要开启(不会出现最大值< i 的情况)维护cnt ,当我的cnt 为0,说明是可以的。2 我们可以维护需要开启但实际是关闭的通道的数量。
2024-10-23 23:42:59
190
原创 2022女生赛I (哈希+DP+卡常的优化)
并且我们查询了很多不必要的子串(i j ),所以要减少find的次数。我以前都是写hash 从下标1 开始存的hash ,写的时候脑子抽了,非要从0 开始存储。然后dp 转移,是S长度的平方(5000*5000),在set 里面找,还有一个log 的复杂度。dp[i][j] 为最后一个字符位置是 i ,用的是(1/0)A /B 类字符串。一开始写的单哈希wa了,后来改的双哈希。哈希主要用在dp转移的时候,判断这个子串是否在A类或者B类。那么要如何较快的判断(i j )是否在A类或者B类。
2024-10-08 15:15:31
293
原创 cf div2 977B(数论(同余)+上界的判断)
遍历 a 的数值桶,同时维护a关于x余数的数值桶。(因为有效的a的范围是2e5 所以关于 x余数的数组最多开到 2e5).1.因为n 的范围是2e5,所以最大的mex就是n 、这样的数据范围就可以开桶了,(这个很快就意识到了)长为n 的数组,可以对数值中任意的一个元素 进行 任意次的+x 的操作。n 的范围是 2e5 ,x的范围1e9。问数组可能的最大的mex 是什么?
2024-10-07 19:40:55
264
原创 abc 374 E (二分答案贪心)
先贪心的想,我们肯定要选择性价比高的机器(用较少的钱做更多的工作).如果刚好这些机器的效率是mid,那么这是最优的。如果效率>mid ,那么就有可能存在将几个a替换为b ,然后效率为MId,花费的更少。然后因为a b 很小,X很大,可以枚举性价比低的次数)随着效率的增大,所需要的钱变多。所以效率和需要的钱之间是单调的。那么问题变成 给定效率 判断所需要的最少的钱 是否小于等于X。那么对于给定的效率怎样找到 所 需要的最少的钱。最终的生产效率是所有工序的产品数量的最小值。现有 x元,问生产效率的最大值。
2024-10-07 19:10:42
426
原创 cf 975 div2 C(结论)E (树+思维)
n 的范围小于 1e5 ,考虑枚举每组物品数量的上限,并算出根据已有的物品按照该限制至少分多少组M,之后可以求出补齐M组所需要的最少额外数量。给你一颗n个节点树,操作:可以将一个叶子节点和它相邻的边删去(这个操作可能会产生新的叶子节点)将N 种颜色的物品按每组上限c 个分组,保证每组物品颜色不同。问最少操作多少次 使得 所有的叶子 的深度相同。对于 深度小于K 的节点,是否要删除,要看这个节点能到的最大深度,dp_mx,我们要删除 dp_mx 小于K的节点。假设操作完后,叶子节点的深度是 K。
2024-10-01 20:38:03
322
原创 cf 974 div3 D(滑动区间 动态维护 区间信息 ) E (分层图,扩点最短路) F(树dp)H(异或哈希)
我们需要处理三个最短路(因为边权是固定的,所以可以用bfs)一个是a 到每个点的最短路,b 到每个店的最短路,每个点到N的最短路(其实就是N到每个点的最短路)如果根节点选的话 ,从不选的子节点转移过来的时候,不造成影响(因为我们只关注选的节点),从选的子节点转移时,子节点对根节点 有 -c,根节点对子节点有-c ,所以要减去两个c。如果根节点不选的话,根节点不会对子节点造成减c的影响,子节点(不论子节点选不选) 无法 对根节点造成减c 的影响(因为 根节点的 价值不计入答案)显然的是可以转移的东西。
2024-09-30 19:15:31
416
1
原创 分层图 的尝试学习 2.0(分层图+(多元最短路,超级源点,起点的位置任意的情况),还有一个超级汇点,就是终点任意,目前没遇到)
二维网格,只包含空房间,障碍,起点,钥匙和对应的锁(只有拿到对应的钥匙才能开对应的锁,否则锁的位置和障碍没什么区别,无法通过)问获得所有钥匙所需要移动的最小次数(相当于最短路),可以上下左右移动如果无法;其中(x,y)代表当前所处的位置,mask 是一个二进制数,长度恰好等于网格中钥匙的数量,mask的第I个二进制位为1,当且仅当,我们已经获得了网格中的第i把钥匙。,(一个点有若干的状态,所以一个点会扩充出来若干点)看做是图上的点,然后搜索bfs或者dijkstra的过程不变。进行扩点,最多1e5个点。
2024-09-29 10:26:38
583
原创 每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd,H二分中位数+复杂度分析 )
在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。(1 的个数是偶数,需要2个1来补齐,剩下的1平均分即可)。(这里可以这样理解,每个数都是 gcd的倍数,所以进行两两加法和减法,生成的元素。也就是让小的数尽可能的出现。因此,如果我们将偶数位置上的所有字符都改为出现次数最多的字符,那么奇数位置上的字符也是如此。定义了一个 交替字符串 奇数位置上的字符形同,偶数位置上的字符相同,字符串长度为偶数。进行的操作就是 将 任意两个数中那个较大的数,变成两个数的和或者是两个数的差。
2024-09-06 09:36:18
975
原创 abc 366 E+F(曼哈顿距离 x y 两个坐标分别计算)(贪心+01背包)
因为我们每次搜索的区间是左闭右开的,所以最后一个是2e6+1(多的加1,就是因为右端点是开的)求 f (f的数值最大是1e6,直接开数值桶来维护),我们要遍历 -2e6 到 2e6 的所有范围。我们可以枚举 某个x 的 个数,找到合法的y 的个数。所以我们干脆 一个区间一个区间的遍历。(xi 将 [-2e6, 2e6 ]划分成的区间 )所以 可能的 点 的 x 的范围是 [-2e6 2e6]我们可以猜测,各个函数的嵌套顺序是 可以贪心的。因为D 最大时 1e6,-1e6<=xi<=1e6。
2024-08-24 22:19:58
370
原创 每日一题~abc 367 D+E(F 在上一篇)(区间和相关的计数问题前缀map,建图+倍增)
最后的 2 1 4 同样是1号,1 4 3 同样是2号。(每一个号的有效区域长度为n-1 最后的四号到其他点的代价计算的区域为 3 2 1 ,所以后面是计算重复的 )所以我们可以从 第三个元素开始处理。环形的休息区,编号为 1-N,顺时针方向,从休息区i 到i+1 需要的代价是 ai, 从休息区 s 顺时针走到休息区 t ( s!2 1 4 是从1号到其他号的代价。1 4 3 是2号到其他号的代价。同时每个右端点 有效的左端点只有两个(也就是i 只有两个,但是因为比较的是 Si-1,所以要处理三个点)
2024-08-21 22:41:43
488
原创 abc 367 F+luogu p10102(随机算法)
如果这个区间合法,那么这两个区间的和是相等的。充分条件的计算代价比较大,想找个计算代价小的必要条件,但必要条件可能会出错,然后通过一些手段(比如随机映射)把这个出错的概率降低。,时间复杂度可以,但由于是必要条件,原本左右两边不相等的,左乘后可能会相等,所以这个X最好随机生成出来,这个误判的概率就会比较低,找个必要条件,如果AB=C,那么XAB=XC,即左乘一个矩阵,左右两边仍相等,而如果。(排列的顺序不重要,主要是元素的种类个数相同)X是1×n的矩阵,那么左边两个矩阵乘法的复杂度就降为O(n^2)
2024-08-21 15:32:50
185
原创 每日一题~div4 964 E+F+G (思维?数数?交互?有手就行?)大失败的两个小时
求出他们的中位数(排序之后,在中间位置的数字)的和,输出和mod1e9+7。我们选出两个数字来,分别进行乘三的操作,和除三(向下取整),至少需要多少次操作,使得全部的数变成零。中位数不是0就是1,所以一个子序列的贡献不是0,就是1.也就是说中位数是1的时候,才有贡献,否则没有影响。因为只有01,所以只要这个子序列中的0的个数小于等于 k/2,中位数就是1.那么这几个子序列就会贡献1.现在的问题就是 这样的子序列的有多少个。可以统计数组中0 和1 的个数。枚举0的个数,利用组合数求解。
2024-08-09 09:39:56
216
原创 每日一题~ abc 365 E 异或运算(拆位+贡献)
2,求所有子数组的异或和 的异或和。对于下标从1开始的情况,**包含这个元素的子数组的个数是(i)*(n-i+1).**累加起来就可以了。每个数贡献的是 2^(n-1) 次,只有n=1的时候,是奇数。1,所有 子数组的元素和 的和。考虑每个元素的贡献,是包含这个元素的子数组的个数,6.所有非空子序列的 异或和 的异或和。那么 这一位对答案的贡献是 0的个数*1的个数 *这一位的权重。5.和1的子数组不同,这次是所有非空子序列的元素和 的元素和。通过转化,其实就是求,异或前缀数组,两两异或的 和。
2024-08-07 21:34:40
984
1
原创 每日一题~EC168 A+B+C+D
分析:只需要在相同的连续字符中间插入一个不同的字符就可以了。如果没有连续的相同字符,直接在末尾加一个和末尾字符不同的字母。你可以多次操作:选择一个点,让其子树所有点(不包括自己)权值减 1,自己权加1。有偶数长度的括号序列,但是奇数位置的括号丢失了。你需要找出所有可能的原序列中,权值最小的为多少。分析:一个节点的最大值,取决于他子树权值最小的点。每一个字符的花费是2,如果ai-1 ==ai ,那么ai 的花费是1.一个合法括号序列的权值定义为匹配括号的距离和。至于根节点,直接加上mn的值就可以了。
2024-08-02 08:13:55
364
原创 每日一题~div3 962 D+E+F(枚举算时间复杂度+经典操作+二分答案)
因为a*b<=n,所以枚举a b 的时间复杂度不会很大。准确的分析一下,当 a 为1 时,b 的枚举个数为 n ,当 a 为 2 时,b 的枚举个数为 n/2.以此类推为 n+n/2+n/3+…反思:当时没有认真的计算复杂度,只是单纯的感觉枚举 a b 的复杂度为 1e3 *1e3。寻找正整数三元组(a,b,c),不同的顺序算不同的答案。至于具体的计算,个人还是喜欢数学公式的推导。枚举 a ,之后枚举 b .c 的个数可以直接计算出来。如果最终 结果的 操作次数大于k, 那么减去多于的数值。
2024-07-30 08:48:53
357
原创 每日一题~abc364 D+E(二分答案,交换权值法(将一维的信息和dp值域交换)dp)
达到降低dp的时间复杂度的目的。定义dp[i][j][k] 表示 考虑前i 个物品,甜度为j ,咸度为k ,最多吃的菜数为 dp[i][j][k].但因为j k 的数值到1e4,所以这样设计必然超时。重新定义dp[i][j][k] 表示考虑前i 个物品,吃的菜的数量是j 甜度是 k, 此时最小的咸度。我们可以二分距离d,在区间[b-d,b+d]内的A 数组中数字的个数具有单调性。的意识不是很强 ,赛时根本没有注意到 小的离谱的 N(只有80),反而一门心思扑在了 我想出来的错误的贪心上。
2024-07-28 23:16:34
295
原创 三分(解决二次函数极值的问题,也就是单峰的问题)
Umbrella公司最近为彩虹城的人们发明了一种新型伞“UmBasketella”,它的想法也来自于这种多功能 - 伞和日用品的组合。由于彩虹城经常下雨,这种创新用途是成功的,“UmBasketella”卖得很好。不幸的是,最初的“UmBasketella”没有自动音量控制技术,因此当用户试图在其中放入太多东西时很容易损坏。准确的说,这是我遇到的第一个三分的题目。需要求解的周长 y 和时间 x 构成函数,并且函数是 向上开口的 类似抛物线的图形。输入包含几个测试用例。check的时候,计算每一个人的w。
2024-07-28 10:28:17
494
原创 每日一题~961div2A+B+C(阅读题,思维,数学log)
感觉div2 前面的题面,很喜欢定义一些东西,问达到一定的目标的最少操作数,感觉这些题,主要还是理解定义,能明白本质。这些钱里 能选出来 t+ 1 的个数 是 int k1=min(cnt[t+1],lef/(t+1))最大限度的替换 次数 是 t 的可以选出来的个数,剩下的钱,t+1选完之后剩下的个数。其实我们尽可能的让 t的花销加上 t+ 1的花销 逼近m。1 只有n 的是一个(主对角线),其他的是两个。之后 再剩下的钱 ,可以用 t+1 替换t。显然,要先 格数的多的格子去放。
2024-07-24 23:33:38
402
原创 每日一题~960 div2 A+B+C(简单奇偶博弈,构造,观察性质算贡献)
(理解了定义,其实就可以水到渠成的发现,b 数组是单调不增的,这很显然,毕竟我们求的是前缀的最大值,虽然这个最大值指的是出现两次及以上的数字)。现在来考虑两侧的位置,有三种情况可以填,一种是全填-1 ,一种是全填1,一种是 1 -1 交替填,如果全填-1的话,那么可能Y X之间的1比较少,前缀的最大值是-1.那么X的位置就会变。我们可以发现在操作依次之后,以后的每一次,都是在前面添一个零,最后面的一个数出去了。从Y到 X的位置,全填1.一方面 可能和我数学素养有点关系,但感觉更多的还是,练的少,思考的少。
2024-07-24 15:55:22
432
原创 每日一题~ abc363()
这个可以给 n 不断减去 两位 的个数,三位的个数。此时的L 就是 长度,这个时候 n 剩余的数,代表着 我们要寻找的,是长度为l 的的第 n 个。我们可以发现 对于 长度为l 的回文数,有 k=(L+1)>>1 9*10^(k-1) 种结果。n 长的字符串,求这个字符串的排列中,不存在k 长的回文子串的,排列有多少种。C 题(暴力枚举,next_permutation的使用简化搜索的代码)因为回文数两边是对称的,所以我们只用考虑一半就可以了。当然因为有0 的存在,我们先对N 处理一下。
2024-07-22 10:32:46
228
原创 每日一题~ Birthday Cake+19浙江省赛 I(字符串哈希,匹配)(哈希判断回文串,奇偶性质的博弈)
2.有形如 ABA 的串,这时,我们需要寻找 B 串的数量。对答案的贡献就是 B的数量。1.有多个A 串,对答案的贡献是 cnt*(cnt-1)/2。n 个字符串,两两组合,问有几对能形成 AA 串。我们使用哈希来处理字符串。
2024-07-21 23:10:08
338
原创 每日一题~cf 959 div1+div2 C(对于求区间的问题,枚举左端点。经典的套路)
表示 n 个数 ,(每个数大于等于1,小于等于2e5)g 表示 区间的和,当g>x 的时候,将 g 变成零。因为sum 是单增的,所以我们可以二分出来,第一个>x 的点,记为k;满足条件的r ,从 l 到 k-1 ,都是满足条件的 k 位的时候被清零了额。一般思路:枚举左/右端点,以0(小复杂度),可以是logn 或者是 log n^2。当然还有一些边界的问题。比较套路的题,因为询问的是子串,一共有n^2 中状态。枚举左端点l ,看有多少满足题意的r。当k+1 位 的时候 ,相当于 l=k+1。
2024-07-20 10:56:21
179
原创 每日一题~div4 952补题 E+F+G
(其实就是 在长的方向上 选出一定连续长度的 的不同取法,在宽的方向,在高的方向。因为x y z 的范围小 只有2000.所以我们可以枚举长 和宽 ,高通过体积计算。所以上面的结果减去 cnt^l (这样计算包含了l位 和l位以下的,把0放前面就可以)n 至少是l+1位,那么l位以及 以下的数字是不符合的。显然的,要满足这个等式,那么n的每一位上的数 和k相乘都不能进位。一开始,所有攻击都不处在cd时间内,问击杀boss的最少的回合数。n最多是r位,先不考虑左边界的问题。注意n 是左闭右开的。
2024-07-17 16:36:26
340
原创 每日一题~ABC 362 C Sum = 0 (没什么技巧和知识点的简单题 做不出来,什么实力>_<)
我首先就注意到 ,区间 可以分为 左右端点全是正的,和左右端点 全是 负的,还有 一正一负的情况(这种的可以取到零)。所以我就想 计算出来 取正的最大 最小值,取负的最大最小值,之后不够的 有 一正一负 来补。(当然我现在反应过来,可以开结构体,把index 存储起来,),赛时的时候觉得做不了,就没写。在每个区间内选出一个数字出来(左右端点可以选),使得这些数 的和为0.之后遍历区间,尝试将区间由原来的 右端点,变成左端点或者中间的数值。具体的看代码,想明白就是很简单的一道题。
2024-07-15 15:24:30
219
原创 每日一题~ cf div3 957 D+E(若只dp,暴力枚举)
典型的动规 dp[i] 代表 到达i 所要游的最少的米数,从两个地方转移。现在已知 n,那么我们可以枚举 a 的数值,和最终结果的位数 来确定b的值。n 长的字符 ,m k 可以跳跃的最大距离(每次跳跃的距离1
2024-07-14 23:58:42
464
原创 每日一题~1969积木大赛,国王的游戏(贪心+高精度),奶牛玩杂技
因为左手上的数都是大于等于1的,所以 越到 后面,积越大。我们现在看右手数值,因为左右的累积是越来越大的,所以应该将右手数值大的放后面,换言之,右手数值小的在前面。要使最大值最小,(咋一听,有点二分的感觉,但实际上是贪心)要使得最大值最小,也就是削弱每位大臣的奖励。每次可以选择连续的一段区间,区间内的数都加1,询问至少多少次,能够将n 个0,转化成 给出的序列。综上,看完题目,我们可以隐隐感觉出来,左右手小的排在前面。如果右边比左边低,那么在操作左边的时候,右边的已经满足了。只想到了分治的思路。
2024-07-14 14:41:58
486
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人