- 博客(24)
- 收藏
- 关注
原创 E. Crazy Robot(CF1613E)(搜索 + 思维)
E. Crazy Robot(CF1613E)(搜索 + 思维)题目来源:E. Crazy Robot(cf1613E)题意:给出一个地图, 有墙( # ), 有房间( . ), 还有一个实验室( L ), 机器人可能在任意一个房间, 每次让其移动时, 他总会向其他可移动的方向移动, 若其他方向移动不了, 他将停在原地不动.判断当机器人在什么位置时, 无论机器人怎么移动都能移动到实验室, 将所有可能的位置从 ‘.’ 变成 ‘+’, 最后输出地图思路:每次从实验室往外搜索, 判断搜到的当前的
2021-12-02 19:25:33
684
原创 第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂)
第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜)题目来源:第46届icpc 沈阳 J-Luggage Lock题意:给出两个四位数的密码锁a和b, 求由a变到b所需的最小步数思路:我们首先可以先将 a 变为 0000, 那么如果将 b 与 a 对应的位置旋转相同的次数, 那么 原始a -> 原始b 就等价于 0000 -> 修改后的b比如 0003 -> 0005 可以转换成 0000 -> 0002, 1234 -> 4321 可
2021-11-23 16:28:51
764
原创 HDU6697 Closest Pair of Segments(几何数学)
HDU6697 Closest Pair of Segments(几何数学)题意:给出 n 条线段, 每个线段给出两个端点, 求任意两条线段的最短距离中最短的一个距离代码:#include <bits/stdc++.h>#define endl "\n"#define rep(i, m, n) for (int i = (m); i <= (n); ++i)#define rrep(i, m, n) for (int i = (m); i >= (n); --i)
2021-11-20 22:08:38
356
原创 第45届 2021icpc 昆明 A-AC(反悔贪心)
第45届icpc 昆明 A-AC(反悔贪心)题目来源:第45届icpc 昆明 A-AC题意:给一个长度为 n 的字符串, 最多有 k 次修改字符串的机会, 每一次只能将任意一位字符修改为其他字符, 输出修改后的字符串最多有多少个"ac", 并输出字符串思路:通过数组 a[i] 记录将第 i 位和第 i + 1 位变为 “ac” 所需的最小步数, 如果选择 a[i] 后就不能选择 a[i - 1] 和 a[i + 1]假设 a[i] 是所有 a 中最小的, 那么我们要么只选 a[i], 不选择
2021-11-17 20:39:35
732
原创 2021icpc 济南 J Determinant(高斯消元 + 行列式求值)
2021icpc 济南 J Determinant(高斯消元)题目来源:J Determinant购买的时候将时光机取消即可题意:给出 n * n 的行列式的值的绝对值 det 以及这个行列式, 判断该行列式的值的正负, 其中 det 最多有1e4的位数思路:因为线性代数太久没看过了, 比赛的时候甚至都不知道 det 是行列式的值,还是一点一点推出来的, 发现 A的逆 乘 A 事实上就是A的第 i 列和第 j 列相乘, 所以化成上三角之后有用的部分只有主对角线的部分, 那么第 i
2021-11-16 10:56:12
953
2
原创 D. Pythagorean Triples(1487D)(打表找规律 + 二分)
D. Pythagorean Triples(1487D)(打表找规律 + 二分)题目来源:D. Pythagorean Triples题意:给定一个 n,求满足以下条件的数对 (a, b, c) 的个数1 <= a <= b <= c <= na * a + b * b = c * cc = a * a - b思路:这个题推公式也可以求,但当时太菜了没想到,而且题目还理解错了通过打表我们发现(刚开始表还打错了)n = 1 ~ 4, ans = 0n
2021-11-10 15:46:19
382
原创 A. Journey Planning(1320A)(贪心)
A. Journey Planning(1320A)(贪心)题目来源:A. Journey Planning题意:给出一个长度为 n 的数组 x,寻找一个上升子序列,该子序列需要满足i - j = x[i] - x[j]在第一个条件满足的情况下,子序列的和最大求最大的和为多少思路:首先在满足的序列中,比如 x[1], x[2], x[4], x[6],那么我们一定是将这四个数全选,而不是选一部分。根据题意我们可以把 i - j = x[i] - x[j] 转化为 x[i] - i
2021-11-09 13:47:38
119
原创 C. Jury Meeting(1569C)(组合数学)(正向思维)
C. Jury Meeting(1569C)(组合数学)(正向思维)题目来源:C. Jury Meeting题意:有n个人,每个人的序号为1 ~ n,第 i 个人有 a[i] 个问题,每次一个人只能问一个问题将这 n 个人排序,寻找有多少种序列使得不断从左到右提问题,不会出现同一个人连续问两次问题思路:首先通过样例我们不难发现,当最大的两个数之差小于等于1时答案不为0差大于 1 时,答案为 0差等于 0 时,答案为 n!差等于 1 时,记最大的两个数为 x 和 y,其中 x >
2021-11-06 14:39:18
134
原创 D. Training Session(1598D)(思维、组合数学)
D. Training Session(1598D)(思维、组合数学)题目来源:D. Training Session题意:给出 n 个问题,每个问题有两个属性:序号 ai 和难度 bi,其中 1 <= ai, bi <= n,保证没有两个问题的序号和难度都相同求选出三个问题满足下面要求之一的方案数三个问题的 a 全不相同三个问题的 b 全不相同思路:逆向思考,用所有方案数减去不合法的方案数那么所有方案数就是C(n, 3)接下来考虑不合法的情况:首先开两个数组:c
2021-11-05 14:59:55
364
2
原创 B. Moderate Modular Mode(1603B)(思维、数学)
B. Moderate Modular Mode(1603B)(思维、数学)题目来源:B. Moderate Modular Mode题意:给出两个偶数 x 和 y,2 <= x, y <= 1e9,找到一个 n,使得 n % x = y % n,并且 1 <= n <= 2e18思路:当 x > y 时, 不难发现,只要让 n = x + y 即可当 x <= y 时,我们分三个区间来选取取 n < x 时,n % x = n,y
2021-11-01 18:29:04
279
原创 C. Two Arrays(1288C)(组合数)
C. Two Arrays(1288C)(组合数)题目来源:C. Two Arrays题意:给出 n 和 m,构造两个数组 a 和 b,满足以下条件数组长度均为 m两数组的值域为 1 - na 数组按非降序排序b 数组按非升序排序a[i] <= b[i]思路:根据题意我们可以知道,a升序,b降序,并且 a[1] >= b[1],那么我们可以将b数组翻转一下,并将它们连接起来将新的两个数组先连接起来组成 b[m], b[m - 1], … , b[1], a[1],
2021-10-29 19:53:07
229
原创 B. Orac and Models(1350B)(dp + 因数分解)
B. Orac and Models(1350B)(dp + 因数分解)来源:B. Orac and Models题意:给一个长度为 n 的数组 x,查找一个最长的序列,该序列满足在数组 x 中的下标 i1 < i2,i2 % i1 == 0,且 x[i1] < x[i2]思路用 f 数组记录,f[i] 表示以 x[i] 结尾的最长序列长度。那么每次我们只需要从 x 数组中找到下标是 i 的因子且不为 i ,是否小于 x[i],那么 f[i] = max(f[i], f[inde
2021-07-22 17:17:03
91
原创 B. Phoenix and Beauty(1348B)(思维)
B. Phoenix and Beauty(1348B)(思维)来源:B. Phoenix and Beauty题意:给一个长度为n的数组,以及一个整数m,可以向数组中添加元素,使得这个数组任意两个连续的k个数的和都相等。有解时保证构造的长度小于1e4,无解输出-1思路:a[1] 到 a[k] 的和等于a[2] 到 a[k + 1] 的和,说明a[1] == a[k + 1],所以任意两个长度为k的字段排序后全都相等。那么当数组中数的种类大于k时,一定不能构造,小于等于k时,进行n此操作,每次
2021-07-21 17:32:34
90
原创 Phoenix and Distribution(1348C)(思维)
Phoenix and Distribution(1348C)(思维)来源:Phoenix and Distribution题意:给出一个字符串,将其分为k个字符串,每个字符串长度不小于1,使得重组的k个字符串中,字典序最大的字符串最小,并输出字典序最大的那个思路:当最小的k个字符不是全都相等时,直接输出这k各种最大的那个,因为剩余的字符直接放在其余k - 1 个字符后边一定比这个字符的字典序小最小的k个字符全都相等时,去看剩余的n - k个字符是否全相等剩余字符全相等:将
2021-05-30 10:09:28
121
原创 G. Special Permutation(CF 1352G)(思维)
G. Special Permutation(CF 1352G)(思维)来源:G. Special Permutation题意:给出n,构造一个1 ~ n的序列,满足相邻两位差的绝对值为2或3或4思路:分四种情况很容易想到,当n < 4时,无解当n == 4 时,为2 4 1 3(还有其他的)当n为奇数时,从1开始,每次+2(使用的奇数),之后是n - 3,n - 1,最后从n - 5开始往前枚举,每次-2(使用的偶数)当n为偶数时,也从1开始,每次+2(使用的奇数),
2021-05-30 00:01:57
181
原创 Harmonic Number (II)(LightOJ - 1245)(整数分块板子题)
Harmonic Number (II)(LightOJ - 1245)(整数分块板子题)来源:Harmonic Number (II)题意:求i为1 ~ n,n / i 的和思路:整数分块:对于r = n / (n / l),i在[l, r]中,n / i全相等坑点:这个题比较坑的是,如果循环的l用long long就会超时,而l可以取的极限恰好是int的极限范围,所以只能用int的同时,去特判而提前结束(因为这个T了好久,而且不是第一次因为使用long long而T了,主要是long
2021-05-20 23:18:19
127
原创 Leading and Trailing(LightOJ - 1282)(快速幂 + 巧妙运用log)
Leading and Trailing(LightOJ - 1282)(快速幂 + 巧妙运用log)来源:Leading and Trailing题意:给出n和k,求n ^ k的 前三位 和 后三位(坑点:保留前导0),保证n ^ k的位数大于等于6思路:后三位很好求,通过快速幂每次模 1000 即可前三位当时真没想到,最后看大佬们的题解,发现都是运用log10,所以我就会这种方法首先,了解一个公式,n = 10 ^ log10(n)接着,当0 <= x < 1时,1
2021-05-20 23:05:35
96
原创 Help Hanzo(LightOJ - 1197)(欧拉筛 + 思维)
LightOJ - 1197 Help Hanzo来源:LightOJ - 1197 Help Hanzo题意:判断a ~ b区间内,有多少个素数,a,b范围[1, 2 ^ 31 - 1],b - a <= 1e5思路:这个题巧妙就巧妙在区间长度上,为1e5,而a,b最大范围为INT_MAX,所以可以先筛出来sqrt(INT_MAX) 以内的素数,约为50000,通过这些素数去标记[a, b]范围内的素数,通过 埃氏筛的方法(O(nloglogn)),将每一个素数增加,每次增加其本身的
2021-05-15 21:05:40
195
原创 Aladdin and the Flying Carpet(LightOJ - 1341)(欧拉筛 + 质因数分解)
Aladdin and the Flying Carpet(LightOJ - 1341)来源:Aladdin and the Flying Carpet题意:给出a和b,求n的因数对(如x * y = a)中min(x, y) >= b 的有多少对思路:分两种情况b > sqrt(a)时,结果为0其余情况,先求出a有多少个因数对(log(a)),之后减去min(x, y) < b 的对数。(这里数据好像挺水的,因为这里复杂度是O(b),4000组b,b的总和还没大于
2021-05-12 22:25:17
124
原创 Sigma Function(LightOJ - 1336)(思维 + 因数和知识点)
Sigma Function(LightOJ - 1336)(思维+因子和)来源:Sigma Function(LightOJ - 1336)题意:求1~n中,因子和为偶数的数的个数因子和先说一下因数和咋求若n = x1 ^ p1 * x2 ^ p2 * ... * xn ^ pn那么n因数个数 e(n) = (p1 + 1) * (p2 + 1) * ... * (pn + 1)所有因数之和 d(n) = (x1 ^ 0 + ... + x1 ^ p1) * ... * (xn ^
2021-05-12 22:01:29
122
原创 Bi-shoe and Phi-shoe(LightOJ - 1370)(欧拉筛)
Bi-shoe and Phi-shoe(LightOJ - 1370)(欧拉筛)来源:Bi-shoe and Phi-shoe题意给出n个数,求对应欧拉数大于等于给出数的最小总和思路先线性筛出每个数的欧拉数,之后开个数组让res[oula[i]] = i,记录欧拉数为 oula[i] 的最小整数为i,但此时我们一定还有一些数没有赋值,所以我们倒着跑一遍,将没赋值的数用后边最接近的赋过值的数去赋值,最后在倒着跑一遍,将数组变为单调递增的形式代码#include <bits/stdc++
2021-05-11 22:54:15
96
原创 POJ--2546 Circular Area(相交圆面积)
Circular Area分三种情况两圆相离或外切时,答案为0(d >= r1 + r2)两圆属于包含关系或内切时,答案为小圆面积(d <= abs(r1 - r2))其余情况为相交其中第三种情况画个图就很好看出来了在这个图中很好的看出来,答案就是蓝色扇形面积 + 绿色扇形面积 - 粉色四边形的面积之后可以去画一画其他的相交情况,比如d < min(r1, r2), min(r1, r2) < d < max(r1, r2),最后会发现都是一样的(别问我为什
2021-04-23 23:00:47
192
原创 中国剩余定理(个人笔记)
中国剩余定理前序已知a和x0,且x % a ≡ x0, 则x = (x0 % a + a) % a1. 扩展欧几里德算法求出a与b的最大公因数d的同时,还能解出ax+by=gcd(a,b)中(x,y)的一组特解int exgcd(int a, int b, int &x, int &y){ if(b == 0) {x = 1, y = 0; return a; } int d = exgcd(b, a % b, x, y); int tmp = x;
2020-11-06 23:57:34
323
1
原创 Markdown简单使用
1、代码块//三个`符号(在ESC键下)+语言2、标题//# 一级标题//## 二级////...////最高到六级3、字体//加粗**51515**//高亮==15151==//删除线~~515~~//斜体*1515*//加粗51515//高亮15151//删除线515//斜体15154、引用//引用>15165>>1555>>>>147//引用>15165>>1555
2020-10-26 23:03:49
98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人