04 2021 档案

摘要:#原题链接 A题 Red and Blue Beans 题意:给定$r$个红豆,$b$个蓝豆,将他们分到任意多个包中,要求每个包中红豆和蓝豆的差值不能超过$d$,可以则输出$YES$,否则输出$NO$。 贪心即可,将较小的那个放到不能放为止,然后在将另外一个顺次放进去。 代码: typedef lo 阅读全文
posted @ 2021-04-30 04:05 筱翼深凉 阅读(201) 评论(0) 推荐(1)
摘要:01分数规划 二分答案。设二分的值为实数mid。 如果途中存在一个环S,使得$\sum {(mid*wt[j]-wf[t])}<0$,那么我们可知: 存在一个$S$,使得 \(mid<\frac{\sum{wf}}{\sum wt}\) 也即是说,本题所求的最大值一定大于 \(mid\) 。 如果对 阅读全文
posted @ 2021-04-29 01:01 筱翼深凉 阅读(74) 评论(0) 推荐(0)
摘要:题目要求将一颗最小生成树添加一些边构成一个无向完全图,并且要求添加的边权最小。 而且必须保证构成的完全图中的最小生成树唯一且就是这棵最小生成树。 我们先考虑kruskal算法。 我们需要对边进行排序,每次选择最小的那条边进行构造最小生成树,如果当前的边可以被选择我们有: 1.这个加边从操作是将两个集 阅读全文
posted @ 2021-04-27 01:15 筱翼深凉 阅读(206) 评论(0) 推荐(0)
摘要:首先,我们有两个矩阵,如果其中一个矩阵代表恰好经过x条边的最短路,另外一个矩阵代表恰好经过y条边的最短路。那么将这两个矩阵合并就代表恰好经过x+y条边的最短路。怎么合并呢?结合下面这个式子理解一下: c[i][j]=min(c[i][j],a[i][k]+b[k][j]); 其中i,j,k就是flo 阅读全文
posted @ 2021-04-23 16:36 筱翼深凉 阅读(114) 评论(0) 推荐(0)
摘要:引用大佬的讲法,我自己讲不清楚QAQ 链接 阅读全文
posted @ 2021-04-21 18:24 筱翼深凉 阅读(68) 评论(0) 推荐(0)
摘要:求图上的最小环问题可以用Floyd算法。 Floyd的实质是dp,状态表示为从i ~ j的路径中经过的最大的节点编号是k的路径的最小值是多少,那么我们可以在这过程中利用上一层的状态求出i ~ j的环中经过的节点的最大编号是k的环。 我们可以知道所有的环都可以表示为 i ~ j ~ k ~ i,i ~ 阅读全文
posted @ 2021-04-21 14:12 筱翼深凉 阅读(158) 评论(0) 推荐(0)
摘要:比赛链接 比赛时只出两题,B题卡了半天。C题因为在自习室打的比赛,电脑没电了没交上,吐了。D题没学过,赛后补了一下。 A题 题意:给定一个序列,要求确定其子序列的乘积是否能不为完全平方数。 只需要遍历一遍整个序列,如果有个数不是完全平方数,那么就一定存在一个乘积不为完全平方数的子序列。 代码: #i 阅读全文
posted @ 2021-04-21 02:01 筱翼深凉 阅读(139) 评论(0) 推荐(0)
摘要:这题与传递闭包有关。 我们将通过传递性推导出尽量多的元素之间的关系的问题叫做传递闭包。 对于一个有向无环图G,它的传递闭包等同于一个在保持与其相同可达性的情况下,边数最多的图。在这个图中,当u可达v的时候,边u → v必定存在。换句话说,每个G中的非相同元素偏序关系对u ≤ v都在这个图中有一条边。 阅读全文
posted @ 2021-04-19 15:11 筱翼深凉 阅读(114) 评论(0) 推荐(0)
摘要:Floyd (基于动态规划) dist[i][j]表示从i到j最多经过k点的最小距离。 分为两种情况:经过k和不经过k: 不经过k则为dist[i][j] = dist[i][j]。 经过k则为dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) 阅读全文
posted @ 2021-04-19 01:02 筱翼深凉 阅读(65) 评论(0) 推荐(0)
摘要:gcd(最大公约数) 求解gcd时通常使用的是欧几里得算法(辗转相除法)。 定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。 int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } lcm(最小公倍数) 求解lcm时通 阅读全文
posted @ 2021-04-19 00:37 筱翼深凉 阅读(1148) 评论(0) 推荐(0)
摘要:龙哥的问题 这题要求我们求出1~n之间的所有数与n的gcd之和。 我们知道如果两个数互质的话,两个数的gcd就是1,所以res = gcd(1~n, n) = 互质的数 + gcd(不互质的数,n); 而对于两个不互质的我们有gcd(a, n) = gcd,而当我们两边同时除以gcd时我们有gcd( 阅读全文
posted @ 2021-04-18 23:55 筱翼深凉 阅读(57) 评论(0) 推荐(0)
摘要:链接 题意: 给定一片牧区,一片所有连通的牧区称为一个牧场。要求在两个不连通的牧场的牧区之间添加一条路径,使得两个牧场连接,并且求得再老牧场和新牧场里面的牧场直径最大值的最小值是多少。 思路: 首先根据题意我们得知我们需要求得每个牧场的直径的大小,即牧场里面的牧区之间的最短路径的最大值;其次,我们需 阅读全文
posted @ 2021-04-18 01:12 筱翼深凉 阅读(57) 评论(0) 推荐(0)
摘要:如果要求出最短路个数,那么就需要再拓扑图上做最短路,而能有拓扑结构的最短路模型一般只有Dijkstra和bfs两种算法。而求次短路只需对每个点进行拆点,并且再求得最短路的同时维护一个次短路即可,每次先更新最短路,不能更新最短路再看能不能更新次短路。 代码: #include <iostream> # 阅读全文
posted @ 2021-04-14 21:38 筱翼深凉 阅读(75) 评论(0) 推荐(0)
摘要:链接 人均三题。。。终究还是我low了。 A题 题目长,但意思很简单,直接贪心就好,只需要将每个点赞放到一个系统,每个踩放到另一个系统就好了,那么答案就是r1和r3的和。 代码: #include <iostream> #include <cstring> #include <cstdio> #in 阅读全文
posted @ 2021-04-13 14:14 筱翼深凉 阅读(139) 评论(0) 推荐(0)
摘要:树形dp的基础题。 由于是一个树形结构,所以我们和容易就可以得到一个拓扑图,由此我们在存图时只需要存下每个点的入度,然后对入度为0的节点进行搜索dp即可。 状态表示为f[i][2],f[i][0]表示第i个人不参加宴会的最大快乐指数,f[i][1]表示第i个人参加宴会的快乐指数,所以我们的状态转移方 阅读全文
posted @ 2021-04-12 02:23 筱翼深凉 阅读(71) 评论(0) 推荐(0)
摘要:线性dp 状态表示为f[i, j],表示将a的前i个字符变为b的前j个字符所需要的最小操作数。 我们的操作有三种:删除、增加和修改。 删除:我们删除第i个字符,那么我们就必须使得a的前i - 1个字符和b的前j个字符相等,即f[i][j] = f[i - 1][j] + 1; 增加:我们要使增加字符 阅读全文
posted @ 2021-04-10 19:41 筱翼深凉 阅读(91) 评论(0) 推荐(0)
摘要:题目链接 题目大意: 给定一个数组a,长度为n,要求从其中选择若干个数使得这些数的乘积的最后一位数等于m的数最大。 题目意思很简单,但由于数据范围较大我们需要对每个数取log将其转化我对数的加法运算。 这样我们可以很容易的看出这道题于01背包之间的联系,从n个数中选择若干个数使其的和最大且乘法的最后 阅读全文
posted @ 2021-04-07 16:51 筱翼深凉 阅读(515) 评论(0) 推荐(1)
摘要:约数和定理 对于一个大于$1$正整数$n$可以分解质因数 \(n=p_1^{a_1}*p_2^{a_2}*p_3^{a_3}*\cdots*p_k^{a_k}\) 则由约数个数定理可知$n$的正约数有 \((a_1+1)*(a_2+1)*(a_3+1)*\cdots*(a_k+1)\) 那么$n$的 阅读全文
posted @ 2021-04-07 02:13 筱翼深凉 阅读(242) 评论(0) 推荐(0)
摘要:题目 这场前三题都是毒瘤字符串 A题 Déjà Vu 题意: 给定一个字符串,在某处插入一个字符a将其转换成非回文串。若无法转换成非回文串则输出NO,否则输出YES和转换后的字符串。 贪心题,若字符串不全为a则一定有解,只需从前往后遍历整个字符串,若对称的位置不为a就将a插入该位置即可。 1 #in 阅读全文
posted @ 2021-04-05 00:05 筱翼深凉 阅读(122) 评论(0) 推荐(0)