基础 —— 前缀和、差分
基础 —— 前缀和、差分
c4Lnn
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #618 (Div. 2) C. Anu Has a Function
链接 https://codeforces.com/contest/1300/problem/C 题意 f(x,y)=(x∣y)−yf(x,y)=(x\mid y)-yf(x,y)=(x∣y)−y 已知数组 aaa 可以任意顺序排列,求 f(f(f(f(a1,a2),a3),...,an−1),an)f(f(f(f(a_1,a_2),a_3),...,a_{n-1}),a_n)f(f(f(f(a1,a2),a3),...,an−1),an) 的最大值 思路 易得 f(x,y)=(x∣y)−y=x原创 2020-07-29 14:34:59 · 90 阅读 · 0 评论 -
牛客练习赛74 C. CCA的矩阵
链接 https://ac.nowcoder.com/acm/contest/9700/C 题意 一个 n×nn\times nn×n 的矩形内布满了老鼠 万幸的是,你有一个 k×kk\times kk×k 的锤子,一锤子砸下去可以把它覆盖到的所有老鼠清除 这个锤子只能斜着锤,对于一个 3×33\times33×3 的锤子,它能覆盖到的区域如下: - - * - - - * * * - * * * * * - * * * - - - * - - 一锤子砸下去,最多能清除多少只老鼠 思路 将数组旋转 45∘4原创 2021-02-07 17:18:39 · 152 阅读 · 0 评论 -
Codeforces Round #629 (Div. 3) F. Make k Equal
链接 https://codeforces.com/contest/1328/problem/F 题意 操作一:使最小的数加一 操作二:使最大的数减一 求最小操作数使序列中有 kkk 个相同的数 思路 将所有数排序后,枚举每个不同的数 操作只有三种 Case: 只操作比当前小的数 只操作比当前大的数 操作一部分比当前小的数,操作一部分比当前大的数 易发现不管是操作小的数还是操作大的数,我们都需要将一边的所有数都先操作为与当前数相差为 111 的数才能增加当前数个数,用前缀和预处理 代码 #include原创 2020-11-26 10:10:50 · 96 阅读 · 0 评论 -
EOJ Monthly 2020.7 C. OLED
链接 https://acm.ecnu.edu.cn/contest/292/problem/C/ 题意 一个 n∗mn*mn∗m 的 010101 矩阵 ppp 在 a∗ba*ba∗b 的矩阵 qqq 中移动,求每个点为 111 的概率,按照概率最大的点是 100100100 换算每个点的答案 思路 差分 + 二维前缀和 分别讨论 ppp 中每个点对 qqq 的贡献 代码 #include<bits/stdc++.h> using namespace std; const int N=4000原创 2020-07-31 11:52:02 · 118 阅读 · 0 评论 -
牛客小白月赛 22 G. 仓库选址
链接 https://ac.nowcoder.com/acm/contest/4462/G 题意 给出一个 m×nm \times nm×n 的矩阵,每个点都有一个访问次数,找出以某点为起点到其他点的距离 ∗*∗ 访问次数之和最小 思路 前缀和 若仓库在点 (x,y)(x,y)(x,y) 处,现在将仓库移动到点 (x+1,y)(x+1,y)(x+1,y) ,那么对于左上角为 (1,1)(1,1)(1,1),右下角为 (x,m)(x,m)(x,m) 的矩阵,所有点到达仓库的距离都 +1+1+1,对于左上角为原创 2020-07-29 23:41:21 · 192 阅读 · 0 评论 -
牛客小白月赛 22 H. 货物种类
链接 https://ac.nowcoder.com/acm/contest/4462/H 题意 nnn 个仓库,mmm 个区间,每个区间放入某种物品,求物品种类最多的最小仓库编号 思路 差分 区间按物品种类排序,若物品种类相同,则按区间左端点从小到大排序 合并同一种类物品的重复区间 代码 #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,b[N]; struct node { int l,r,原创 2020-07-29 22:38:43 · 239 阅读 · 0 评论 -
LibreOJ 2359. 天天爱跑步
链接 https://www.luogu.com.cn/problem/P1600 题意 树形图上有 mmm 个玩家,从 sss 走到 ttt 每个节点都有一个观察员 节点 xxx 的观察员在第 www 秒观察玩家,若某个玩家在第 www 秒正好走到节点 xxx,则这个玩家被节点 xxx 的观察员观察到 求所有节点的观察员能够观察到的玩家的总数 思路 树上差分 每个玩家的路径可以分为两部分:s∼lca(s,t)s \sim lca(s,t)s∼lca(s,t) 和 lca(s,t)∼tlca(s,t) \s原创 2020-07-29 21:46:56 · 188 阅读 · 0 评论 -
牛客小白月赛 23 A. 膜法记录
链接 https://ac.nowcoder.com/acm/contest/4784/A 题意 所有的敌人都排布在一个 n∗mn*mn∗m 的网格中 总共能够 aaa 次消灭一整行的敌人,bbb 次消灭一整列的敌人 求能否将敌人全歼 思路 二进制枚举选择行的状态 预处理每种状态能够消灭多少列的敌人(前缀和) cnt[i]cnt[i]cnt[i] 即为在 iii 的状态下有多少列上没有敌人 代码 #include<bits/stdc++.h> using namespace std; typed原创 2020-07-29 14:39:10 · 122 阅读 · 0 评论 -
黑暗爆炸 3307. 雨天的尾巴
链接 https://www.luogu.com.cn/problem/P4556 题意 树形图上每次分配给 aaa 到 bbb 路径上的所有点一个 zzz 类物品,分配 mmm 次,求每个点拥有最多的物品的种类 思路 树上差分+权值线段树合并 设 ccc 数组为每个节点拥有每类物品的计数数组 设 bbb 数组是差分后的计数数组 对于每次分配,让 b[x][z]b[x][z]b[x][z] 加 111 ,b[y][z]b[y][z]b[y][z] 加 111 ,b[lca(x,y)][z]b[lca(x,y原创 2020-07-29 14:10:33 · 227 阅读 · 0 评论 -
POJ 3417. Network
链接 http://poj.org/problem?id=3417 题意 树形图上另添 mmm 条附加边,求第一次删去一条主要边,第二次删去一条附加边后树被分割成来两部分的方案数 思路 树上差分 + LCA 每条附加边构成了一个环,使这个环上所有的主要边都被覆盖了一次 若一条主要边被覆盖了 000 次,那随便删掉一条附加边,即满足要求 若一条主要边被覆盖了 111 次,那么删法唯一 若一条主要边被覆盖了 ≥2\ge 2≥2 次,无法满足要求 我们给每个点增加一个权值 ddd,在 x,yx,yx,y 间加一条原创 2020-07-29 14:07:34 · 89 阅读 · 0 评论