自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(288)
  • 收藏
  • 关注

原创 G 牛客小白月赛87

【代码】G 牛客小白月赛87。

2024-03-09 14:57:57 508

原创 CF 921 div2 e

采用类似于分块的做法处理 2 查询 ,中间的利用线段树直接计算,两边少算的部分利用等差数列公式计算。但是注意在线段树上做查询的时候左区间要 +1 , 因为左区间上的val并不代表这个点的值,而是一段区间的值放在了这个港口上,这个点本上的值是0,要选的是从港口 + 1开始。本质上不是一个很困难的题目,只要是我调代码能力太拉了。通过map实现查询的大于和小于的点,迭代器要先--右边多算的是从[r + 1 , nex]左边少算的是从[l , nex]

2024-01-29 23:28:32 542

原创 根号分治

根号分治本质上来说就是暴力的做法,问题的规模和数字的大小成反比,所以我们可以在问题规模较小时,采用暴力的方法转移,当问题规模较大时,通过别的方式,一般是采用空间换时间的方法,实现快速的转移。s[d][i] 前 i 项 公差为d的加权和 s[d][i] = s[d][i - d] + i / d * a[i]前缀和为 a[s + (k - 1) * d] * (s + (k - 1) * d / d = s / d - 1 + k。当转移规模较小时,采用1 ,当转移规模较大时,采用2。

2024-01-17 21:27:05 583

原创 主席树的板子

先思考全局查询的时候,就是看第k大是在左边的区间还是右边的区间‘现在改成[l , r] 上的查询的就通过维护1-i的线段树实现。大致就是利用前缀和的思想去寻找区间第k大。

2023-11-22 12:59:00 264

原创 CF1325D ( 异或和和性质

先构造一个 u 然后如果全部构造一个相同的数 1 v - u 次 ,如果v-u是奇数,那么很显然是构造不出来的, 如果v - u 是偶数 那么可以构造两个 (v - u)/ 2。如果 u ^ (v - u) / 2 + (v - u)/ 2 == v 那么就可以合并,只需两个数就可以完成构造。下面暴力讨论 u (v - u)/ 2 (v - u) / 2;很明显异或值恒为 u。

2023-11-20 19:42:28 153

原创 abc 329 e ( dfs

因为后操作可以覆盖原先的操作,不停找新的能覆盖的区间(区间里至少有一个字母变成 #),进行覆盖,新覆盖的区间可能对前面的k个位置有影响,在搜索前k个位置的覆盖情况。考虑能否将串s还原为 ###########

2023-11-20 11:53:58 205

原创 分块区间加法 (

【代码】分块区间加法 (

2023-11-15 14:30:18 93

原创 分块1 (分块

【代码】分块1 (分块。

2023-11-15 14:21:03 72

原创 湖北省赛 F (构造

考虑先将第一个字符填写成a,根据这个字符的回文半径r 向后构造,通过 每个 | 的位置判断左右字符串是否相等。

2023-11-15 13:14:50 76

原创 abc 325 d

1.如果现在处于待机状态,没有可做的,就直接跳转时间到下一个可做的地方。4.拿出堆顶,(当前可做且时间最早的),更新时间和答案。贪心策略是当前可做的所有物品中,选择结束时间最早的,2.将当前时间下,所以可做的都加入进来,3.将已经超时且未作的出堆,没机会做了。直接排序后每次选前面的做并不正确。

2023-10-29 10:06:36 214

原创 abc 326 e

求和里的乘法提取公因式后 不变捏。有点脑子但不多时刻,

2023-10-28 22:24:57 93

原创 abc 325 e

【代码】abc 325 e。

2023-10-28 16:49:06 61

原创 牛客小白月赛 80 D

去掉拖堂班级时,剩余需要人数也需要扣掉一个一个班级(因为这个原因wa9发)

2023-10-28 09:52:15 58

原创 P1637 三元上升子序列 ( 树状数组

枚举中间的数,考虑左边有多少个数小于他,右边有多少个数大于它。树状数组维护桶,在有一点乘法原理把。

2023-10-24 18:20:10 89

原创 P1038 [NOIP2003 提高组] 神经网络 ( 拓扑

小于0的贡献不传递,把小于0的贡献都当作0来计算。

2023-10-23 19:33:47 139

原创 CF1322B

或者 b[i] + b[j] >= (1 << i + 1) + (1 << i);那么考虑两两相加后 , 第 i 位能否有 奇数个 1 进行异或。提取前i位 a[x] % (1 << i + 1)考虑每一个位能否贡献1。然后用双指针维护一下。

2023-10-22 21:43:48 73

原创 双指针记录

【代码】双指针记录。

2023-10-22 21:38:54 56

原创 P4343 [SHOI2015] 自动刷题机 (二分

【代码】P4343 [SHOI2015] 自动刷题机 (二分。

2023-10-19 17:46:21 108

原创 P1902 刺杀大使 (二分 + bfs

一眼二分 , 但是bfs得调整这写, 不然会爆掉。

2023-10-18 20:24:13 64

原创 P1266 速度限制 ( dij分层 + 图上dp

其实并不是真的建立分层图,只是有分层图的思想,或者是dp思想在里面。dp[i][j] // 到达 i 点速度是 j 的花费。

2023-10-17 22:43:20 1029 1

原创 P4185 [USACO18JAN] MooTube G (并查集 + 离线

只有大于等于k的可以被推荐,所以每次将g[i].val >= k 的加入并查集,保证所构成的树/森林中所有的边权都是大于等于k的。跟我想法差不多,就是先离线下来,从大到小排列,

2023-10-17 22:38:22 175

原创 P3067 Balanced Cow Subsets G(折半搜索

对于分三组的处理,是通过 1 , -1 ,0 (左 , 右 , 无)考虑前一半分组情况 左a右b 后一半分组情况 左c右d。于是搜索中维护两组差值就可。折半搜索前一半和后一半。抄别人的题解的一天捏。

2023-10-16 10:31:20 77

原创 abc 324 f ( 拓扑 + dp + 二分

二分一个答案,重新设置边权 bea - mid * cost;

2023-10-15 11:38:35 142

原创 abc324 e

枚举i的每一位 ,如果s[i] = t[l] l++ , 后缀同理。对s 进行预处理 , s 能匹配多少个t的前缀 和 后缀 ,字符串拼接后能不能形成子序列 t,考虑suf 和 pre 处理,然后经典 双指针或者二分搞一下,

2023-10-15 10:38:59 178 1

原创 abc324 d

直接枚举满每个数的平方,如果数字数量是满足的,那么就可以对s进行排列得到。猪脑过载时刻,属于是全排列陷阱,全排列大概最大只能到 9!

2023-10-15 09:53:21 53

原创 arc 166 a

可以证明只有当 X中a的数量 = y中a的数量 且对于 Xk <= Yk (X中第k个A的下标 小于等于 Y的第k个A下标)X[i] = Y[i] = C 时的点是不能动的 , 以次为边界,将字符串进行分割,每一段都要分别满足。这种情况用amin代表有多少个A没被分配到 ,不断统计X中a的数量 , Y中出现就 -1。amax统计a + c 的数量, 如果Y中出现 a 就 - 1 ,首先将考虑只有ab的时候,可以发现a是可以不断向右移动的。2.a+c 太少了,在某一个点就不够分 ,

2023-10-10 22:47:26 248

原创 edu 156 div2 c

当s[i] < s[i-1] 将i-1删除这样s[i] 就会到 i-1的位置。观察删除后的字符串,发现并不需要从头开始计算,只需要从连接处在进行比较,观察到 再前面的位置使得字典序改变,字典序最小。可以通过一个单调栈进行维护,或者单链表也可以。先考虑如果让变化后的字符串最小,考虑。计算一下最多删除多少个数。

2023-10-10 22:15:58 218

原创 div 902 b ( 贪心

考虑每个人都要被叫醒,那么使每个人被叫醒的花费最少 , 于是花费小的人肯定要尽量多使用,于是能用小于p的花费就使用 , 如果不够,那么剩下的人就直接用p叫醒。因为有 p 那么只有小于p的花费的人才是做贡献的。挺有思维的一个b我感觉哈哈哈。

2023-10-10 21:56:33 112

原创 arc 166 b

类似就是状态枚举 , 考虑每个状态的花费 , 然后直接转移。和网络赛没做出来的dp挺像的。

2023-10-09 19:17:25 105

原创 abc 323 e (背包dp

a/b 关于p的逆元 (a * x)% p 其实x就是b的逆元。本质上就是一个枚举子集的问题 ,无限背包的思想属于是。s[ i ] 表示第 i 秒刚好有一首曲子结束的概率。然后就是求逆元的问题。

2023-10-08 12:23:30 163

原创 P9714 「QFOI R1」摸摸

首先操作1 会将整个数组变成一个回文数组 , 变成一个回文数组后 进行两次操作2 和 进行一次操作1 + 2 是等效的。所以我们只需要考虑何时进行这次操作 观察到 b 不超过 2000 ,也就是最多也就进行2000次操作。在进行操作1后 就只需验证剩下的操作能否成功。本质上来说好像就是个枚举的题目。

2023-10-06 17:20:59 189

原创 P1972 [SDOI2009] HH的项链(树状数组

将查询区间按照右端点为第一关键字 左端点为第二关键字,从小到大排序,如果一个石头在之前已经出现过,那么就将这个石头的种类尽量放到右边。同时开一个数组记录每个种类的石头的位置,这个种类石头的出现的上一位的种类数减去1。如果维护前缀的种类就是这个题的难点,用树状数组实现离线查询。

2023-10-05 19:47:32 98

原创 P3052 [USACO12MAR] Cows in a Skyscraper G ( 状压dp

【代码】P3052 [USACO12MAR] Cows in a Skyscraper G ( 状压dp。

2023-10-05 17:53:58 76

原创 P4544 [USACO10NOV] Buying Feed G ( 单调队列dp

【代码】P4544 [USACO10NOV] Buying Feed G ( 单调队列dp。

2023-10-02 17:38:24 81

原创 abc322 d ( 枚举 + 几何 + 状态压缩

最后枚举三个图形的所有二进制情况 x ^ y ^ z == f。处理平移后的图形,将这个图形用二进制压缩一下,16个格子压缩成16位。然后枚举这个图形所有的移动情况,最多向左右上下移动3个,属于是长知识了,关于枚举这个图形的摆放。首先你得知道这个图形旋转的公式,

2023-10-01 22:21:30 317

原创 牛客 ( 计算几何

圆心的计算公式是抄的 , 然后这题想到枚举圆心很简单,三点定圆。考虑这个圆心经过了n 个点 那么这个圆心就会出现。然后就是考虑哪个圆心出现的次数最多,

2023-09-30 18:06:22 136

原创 P4124 [CQOI2016] 手机号码(数位dp

不同的数的dp状态其实只有那个limit不同,把limit放在状态外就能实现一次memset。这题具体的就是要记录两位数字,其他的就和一般数位差不多。

2023-09-30 15:16:06 121

原创 P1273 有线电视网 ( 树上背包

【代码】P1273 有线电视网 ( 树上背包。

2023-09-30 13:07:13 94

原创 abc 321 f (背包

考虑每新加入一个物品,那么dp[i] = dp[i] + dp[i-x];这个是需要从后往前遍历,因为你修改的时候,只添加了一个物品x ,所以你的dp[i-x] 是没修改前的值应该,类似01背包的滚动。考虑删除一个物品 那么 dp[i] = dp[i] - dp[i-x] 删除一个物品后,那么dp[i-x] 中的一个x就不能对dp[i]有贡献了,这个是需要从前往后递推的,去掉x的i方案数 = 原来的 i 方案数 - 现在 (i - x) 的方案数 (达不到i的方案数)计数类dp的背包dp。

2023-09-26 09:34:04 75

原创 abc 321 c

用类型状压枚举的方法,考虑哪些数字出现,然后按照从大到小的顺序排列。没想起来总共是有限的。

2023-09-23 21:58:37 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除