- 博客(9)
- 收藏
- 关注
原创 随机生成一个有向无环图
写数据结构作业时想到的一个问题… 我们不妨先做一些这个随机的有向无环图的假设: 首先,它是个有向无环图,并且没有重边 假设随机从图中取出两个不相同的点,那么它们之间有边的概率为固定值(其实还可以有其他类型的随机) 我们一个一个来解决这些问题 让图无环 让一个图无环,关键在于边的方向。对于一个DAG,一定存在一个拓扑序。对于DAG中的每一条边 ,一定是是拓扑序中靠前的点指向拓扑序中靠后的点。那么我们可以给DAG指定一个随机的拓扑序,然后生成边后,根据边的两个端点指定边的方向。这样可以保证图一定是无环的 让
2021-05-23 20:43:44 1516
原创 Codeforces::GYM 102896A Almost Balanced Tree
题目链接 题目大意 定义“几乎平衡的树”(后文简称ABT)为: 它是一棵二叉树 对于任意节点,左子树的权值和以及右子树的权值和,相差不超过 111 现在有 aaa 个 111 和 bbb 个 222,作为各个点的权值。要求构造一棵ABT,输出结果,若不存在输出 −1-1−1 解题思路 我们发现,权值为 222 的点是很令人讨厌的,因为如果不能构成 ABT,一定是因为奇数个 222 在没有 111 的情况下无法平均分配给两棵子树。而且,如果某个 a,ba,ba,b 能构造出ABT,把其中一个 222 替换
2021-03-23 00:48:43 430
原创 Codeforces::GYM 102978I Inverse Problem
题目链接 题目大意 给定 NNN 和长度为 MMM 的序列 XXX ,保证 XXX 种数字都在 111 和 NNN 之间且不重复。求有多少种长度为 NNN 的排列,使其字典序最小的长度为 MMM 的子序列为 XXX 解题思路 主要思路为向 XXX 中插入其没有的数字,看有多少种插入方法能把它变成排列。 假设存在一个 ppp ,使 X[p]<X[p−1]X[p] < X[p-1]X[p]<X[p−1] ,那么,任何数字不能插入到 X[p]X[p]X[p] 后面,否则,XXX的第 p−1p-1
2021-03-23 00:14:07 377
原创 Codeforces::GYM 102896E Easy Measurements
题目链接 题目大意 给定正整数 b,db, db,d,求存在多少组正整数 a,ba, ba,b ,满足 ab+cd=bd\frac{a}{b} + \frac{c}{d} = \frac{b}{d}ba+dc=db 解题思路 式子变形得 a=b(b−c)da = \frac{b(b - c)}{d}a=db(b−c) ,那么就是找有多少个可以正整数 ccc 的值,能让 aaa 也为正整数。 显然,ccc 的取值范围为 (0,b)(0, b)(0,b) 之内的正整数。那么那些可以让右侧分式可以整除呢?
2021-03-21 12:33:54 243
原创 Codeforcces::GYM 102586F Robots
题目链接 题目大意 有 nnn 个机器人和 nnn 个天线,分布在直线上,坐标各不相同。如果我们激活某一条天线,那么离它最近的机器人会移动到天线处爆炸,而其他机器人不动。如果两个机器人和天线距离相同,那么左侧的机器人移动。需要构造一个激活顺序,让机器人移动的距离之和尽可能小,输出距离之和与激活顺序。保证输入机器人和天线坐标分别递增 解题思路 显然,从左到右,让机器人和天线一一对应,机器人的移动总距离是最小的。 那么,如何构造顺序让机器人和天线正好可以一一对应呢?首先可以考虑最左侧的天线。如果最左侧的天线,左
2021-03-21 00:47:26 271 1
原创 Codeforces::GYM 102896K Kate‘s 2021 Celebration
题目链接 题目大意 给定若干个字符串,每个字符串有一个价格。在所有包含一个”2021“的字符串中(2021不一定按顺序,也不一定连续),求最便宜的字符串的编号。若不存在输出 000 解题思路 统计 0,1,20,1,20,1,2 三个数的个数即可判断是否含有 ”2021“ 。然后更新最小值以及答案编号即可 参考代码 #include<bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; int min_
2021-03-21 00:29:05 269
原创 Codeforces::GYM 02586H Construct Points
题目链接 题目大意 构造四个点 A,B,C,DA,B,C,DA,B,C,D ,坐标范围不超过 10910^9109 ,使直线 ABABAB 和直线 CDCDCD 的交点横纵坐标绝对值均不小于 102710^271027 解题思路 构造的两条直线应满足: 斜率尽可能接近 离得本身就很远 因此可以想到类似这样的构造方法: 两条直线的斜率分别为 109109−1,109−1109−2\frac{10^9}{10^9 - 1}, \frac{10^9-1}{10^9-2}109−1109,109−2109−
2021-03-21 00:16:52 204
原创 Codeforces::GYM 102896M Miser
题目链接 题目大意 一共有 nnn 天,每天都有 kik_iki 个人看到指示牌,每天的人有相同有不同。给定每天到来的人的数量和编号,如果希望每个人看到的指示牌上的数字是递减的,至少需要多少个不同的牌子 解题思路 首先,递减和递增本质一样,不妨用递增算,更方便 记录每个人上一次看到的指示牌编号,设为数组mx[]mx[]mx[],初始状态都是000;然后对于每一天,找出这一天所有人中,所有mxmxmx最大值,再加一就是这一天应该放的最小的指示牌编号。之后更新这一天所有人的上一次mxmxmx为这一天的指示牌编
2021-03-21 00:01:26 486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人