- 博客(19)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 图论学习笔记
图论的一些小知识一些前言最近公共祖先(LCA)求LCA方法一些前言打算从现在开始写一点有关图论的知识,用来给自己没事复习看看,所写内容也没什么顺序,感觉自己容易忘就会贴上去;我自己也是学算法没有多久的初学生,如果有错误欢迎指正。最近公共祖先(LCA)定义 :最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。在一般的题目中,会用到求两个节点的最近公共祖先。求LCA方法一般常用的求LCA的方法是倍增
2021-09-02 16:30:14
378
1
原创 单调队列优化Dp例题
思路:如果题目是,每 kkk 个数中就必须选择一个,选择的总数固定,那么可以写出状态转移方程:令 f[i]f[i]f[i] 第 iii 个元素时,选择到的最大值:f[i]=max(f[t])+a[i]f[i] = max(f[t]) + a[i]f[i]=max(f[t])+a[i] 其中 (i−k...
2022-06-07 10:46:46
213
1
原创 P3147 [USACO16OPEN]262144 P
题目链接题目描述:# [USACO16OPEN]262144 P题目描述Bessie likes downloading games to play on her cell phone, even though she doesfind the small touch screen rather cumbersome to use with her large hooves.She is particularly intrigued by the current game she is playi
2022-05-26 14:10:00
242
原创 I. Steadily Growing Steam
I. Steadily Growing Steam思路:滚动数组优化的背包问题,维护一下差值,把数组的负数平移到正数来#include <bits/stdc++.h>using namespace std;using ll = long long;typedef pair<int, int> PII;const int N = 110;ll f[2][N][6010]; // 第 i 个物品 施法 j 次 差值为 k 得到的最大值ll v[N];int t[N];
2022-03-19 11:05:07
369
原创 Codeforces Round #774 (Div. 2)
A. Square Counting#include <bits/stdc++.h>using namespace std;using ll = long long;typedef pair<int, int> PII;void solve() { ll n, s; cin >> n >> s; cout << s / (n * n) << '\n';}int main() { ios:
2022-03-08 20:31:21
382
原创 AtCoder Beginner Contest 222
D - Between Two Arrays 题目概述:给定两个单调不下降的序列 aia_iai 和 bib_ibi, 求 一个单调不下降的序列 cic_ici 的个数, 满足 ai≤ci≤bia_i \le c_i \le b_iai≤ci≤bi思路:设置状态 f[i][j]f[i][j]f[i][j] 表示 cic_ici 的第 iii 位数,并且当前最后一位不超过 jjj 的序列 cic_ici 的数量状态转移:选择第 iii 位为上一位的最大数字,但是要保证这个数是小于等
2022-03-07 23:05:46
326
原创 AtCoder Beginner Contest 238
F - Two Exams题目概述:有 nnn 个公民,现在对这 nnn 个公民分别进行了两次排名,每个城市获得的排名分别为 PiP_iPi 和 QiQ_iQi,现在要在这 nnn 个公民中选出 KKK 个城市,并且给出以下约束:当选择 xxx 而不选择城市 yyy 时,一定不能有 Px>PyP_x > P_yPx>Py 且 Qx>QyQ_x > Q_yQx>Qy思路:上述条件是说,如果市民 XXX 的两次排名都比市民 YYY 要靠前,那么我们
2022-03-04 18:17:38
96
原创 F - Construct Highway
F - Construct Highway 题目:给定一张 N 个点 M 条边的图,要求补上剩下的 (N−1−M)(N - 1 - M)(N−1−M) 条边,使其每个点的度数满足题目所给定的 did_idi,输出可行方案,如无可行方案,则输出 −1-1−1思路:一共有 NNN 个点 (N−1)(N - 1)(N−1) 条边,说明该图无环,所以所有点度的总和一定为 2∗(n−1)2 * (n - 1)2∗(n−1) 否则无解。显然,对于个剩余度大于 111 的点,连接一个度恰好为 111 的点一定
2022-03-03 16:57:16
238
原创 H. Crystalfly
H. Crystalfly思路:f[u]f[u]f[u] 表示以 uuu 为根的子树所能获得的最大值g[u]g[u]g[u] 表示走到 uuu 然后立即返回能获得的值假设 uuu 的子节点为 jg[u]+=f[j]−a[j]g[u] += f[j] - a[j]g[u]+=f[j]−a[j] 拿不到 uuu 的所有直接子节点 jjjf[u]f[u]f[u] 的更新:首先 如果 uuu 没有子节点则 f[u]=g[u]f[u] = g[u]f[u]=g[u], 如果叶子节点不是,则为 f[u]
2022-03-02 20:58:22
697
1
原创 【洛谷题单】区间与环形动态规划
P1220 关路灯思路:令 f[i][j]f[i][j]f[i][j] 表示区间 [i[i[i ~ j]j]j] 内的灯已经被打开时所耗费的最小功率。那么在更新这个区间时,由于可以折返去关闭另头的灯,当前状态无法表示折返这一操作,所以应当对其分类讨论。老王在位置 [i+1][i + 1][i+1] 关闭了位置 [i][i][i] 的灯老王在位置 [j][j][j] 关闭了位置 [i][i][i] 的灯老王在位置 [j−1][j - 1][j−1] 关闭了位置为 [j][j][j] 的灯老王在位
2022-02-02 23:42:58
613
原创 codeforces 1000~2000
D. Palindromes Coloring题目概述:给定一个字符串,需要找到 kkk 个长度相同的回文子串,其中 一个字串中的字符可以交换位置,求每个字串长度的最大值。思路:因为字串中的字符可以交换位置,只需考虑回文串的组成即可。如果含有偶数个相同的字符,则一定可以组成一个回文串,将偶数个的字符组成 kkk 个回文串之后,统计剩余字符的数量,看剩下的字符是否可以添加到每一个字符串的中间,如果可以则长度可以 + 1。(注意剩余的字符应该是由两部分组成, 1.非偶数个字符 2.分成 k 份后剩下
2022-01-25 17:51:43
502
原创 Educational Codeforces Round 117 (Rated for Div. 2)
A. Distance题目概述:问在点 A(0,0)A(0, 0)A(0,0) 和点 B(x,y)B(x, y)B(x,y) 之间能否找到一点 D(a,b)a,b∈Z∗D(a, b) a, b\in Z^*D(a,b)a,b∈Z∗ ,使得从 AAA 到 DDD,从 DDD 到 BBB,的哈曼顿距离相等,如果存在输出坐标,如果不存在输出 −1−1-1 -1−1−1。思路:当 x+yx + yx+y 为奇数时候,即A到B的哈曼顿距离无法背拆成两端,则无论怎么样也找不出点 DDD。当 x+yx + y
2021-12-08 21:49:03
626
原创 Codeforces Round #757 (Div. 2)
A. Divan and a Store题目概述:KKK 元,买价值在 [l,r][l,r][l,r]之间的物品,最多买几个。思路:从小到大排序后挨着买就好代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> PII;const int N = 110;ll a[N];ll n, l, r, k;ll cnt;int main(
2021-12-06 17:09:47
211
原创 Educational Codeforces Round 118 (Rated for Div. 2)
E. Crazy Robot题目概述:LLL 是需要到达的地方 ‘...’ 是 可走的, ‘#’ 是不可走的,现在给机器人下达命令,机器人会按照不是命令所指的方向前进,问哪些点在我们下达命令后机器人可以被 ‘赶’ 到 LLL。思路:要使得下达命令后机器人会到达实验室,这个格子到 LLL 的路径上的每一个格子都应当满足:有一个方向是可以前往 LLL 的除了上面的方向至多再可以有一个方向可以走。所以我们考虑从 LLL 出发,寻找一条满足出度 ≤1\le 1≤1 的路径。先预处理出所有点的出度
2021-12-02 14:13:16
299
原创 Codeforces Round #756 (Div. 3)
A. Make Even反转下标从 111 开始到 kkk 的值,分为一下几种情况本来就是偶数,花费 000 次第一位是偶数 反转整个, 花费 111 次偶数字在中间, 先将偶数反转到第一位再反转到最后一位, 花费 222 次没有偶数 输出 −1-1−1代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> PII;void sol
2021-11-26 17:20:30
368
原创 刷题计划——水题
C. Yet Another Card Deck题目概述:一个长度为 nnn 的队列,每个元素有一个颜色,现在给出 qqq 个询问。每次询问一个颜色,输出队列中为该颜色的元素的最小下标,然后把这个元素放入删除,再放入队头。思路:简单的一个 listlistlist 的操作代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> PII;con
2021-11-25 20:58:10
652
原创 刷题计划——树上问题
A. Parsa’s Humongous Tree题目概述:一颗树,树的每个节点可以取 [a,b][a,b][a,b] 之间的值, 对每个节点取值后,求相连的节点的差的绝对值总和的最大值。思路:对于每个点,不用取中间值,只需取左右端点值就可得到最后答案,这是因为如果对于该点左边的点做差后少了 kkk ,在与后面的点做差时必然会多 kkk.接下来只需树形Dp做一下 f(i,0)f(i, 0)f(i,0) 表示 点 iii 取左端点, f(i,1)f(i, 1)f(i,1) 表示点 jjj 取右端
2021-11-25 17:55:44
113
原创 刷题计划-图论
刷题计划1 ——洛谷题单-省选图论P3758 [TJOI2017]可乐题目描述:给一个无向无环图,nnn 个点(1−n)(1 - n)(1−n) mmm 条边, 总时间为 ttt,一个机器人从点 111 出发, 三种行为: 停在原地,去下一个相邻的城市,自爆。 问经过了 ttt 秒,机器人的行为方案数是多少 ???数据范围1<t≤1061<t≤10^61<t≤106 1≤N≤301 \leq N \leq301≤N≤300<M<1000<M<1000&l
2021-11-05 20:08:53
214
1
原创 图论进阶——网络流
网络流基本概念基本概念1.1 流网络,不考虑反向边1.2 可行流,不考虑反向边1.2.1 两个条件:容量限制、流量守恒1.2.2 可行流的流量指从源点流出的流量 −-− 流入源点的流量1.2.3 最大流是指最大可行流1.3 残留网络,考虑反向边,残留网络的可行流f′f'f′ +++ 原图的可行流fff = 原题的另一个可行流(1) ∣f′+f∣=∣f′∣+∣f∣|f' + f| = |f'| + |f|∣f′+f∣=∣f′∣+∣f∣(2) ∣f′∣|f'|∣f′∣ 可能是负数1.4 增
2021-09-16 20:27:00
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人