01 2022 档案

摘要:太巧妙了~ 题目链接:https://www.luogu.com.cn/problem/P1518 做的时候在如何转弯这个地方难住了,还有什么时候循环结束也不知道怎么判断,,太蒻了; 分析: 1、由于牛和人都不能出圈,所以很容易想到在整个地图的外一圈再加上一圈 障碍物,这样的话就不用判断边界了。 2 阅读全文
posted @ 2022-01-25 14:04 飘向远方丶 阅读(127) 评论(0) 推荐(0) 编辑
摘要:刚开始做的时候自己也手动模拟了一遍,但是结果却错了,后来看了一下题解,学会了一个更加巧妙的解法; 题目链接:https://www.luogu.com.cn/problem/P4924 手动模拟一遍。 题解+注释: #include <iostream> using namespace std; c 阅读全文
posted @ 2022-01-25 11:57 飘向远方丶 编辑
摘要:一般数字超过10^18就得要用高精度了,用数组存大数的每一位,然后模拟加减乘除运算的过程。不过要注意前导零 高精度加法: 模板题:Luogu A+B Problem(高精) 题目描述 高精度加法,相当于a+b problem,不用考虑负数. 输入格式 分两行输入。a,b <= 10^500 输出格式 阅读全文
posted @ 2022-01-24 20:30 飘向远方丶 编辑
摘要:运用离散化的情况: 当数据的范围特别大,但是数据的个数特别少时要用到离散化,否则纯暴力会超时; 模板题:Acwing https://www.acwing.com/problem/content/804/ 先用vector存入需要离散化的所有数据,然后排序,去重。为什么去重?类比于前缀和,每个下标有 阅读全文
posted @ 2022-01-24 16:53 飘向远方丶 编辑
摘要:/* 时间: 2021年12月20日15:59:07 内容:二维前缀和算法模板 心得:重在理解,最好画一个图看一下就明白为什么是这样写的了~ */ s[i,j] = 第i行第j列格子左上部分所有元素的和 则以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为: s[x2][y2] - 阅读全文
posted @ 2022-01-24 14:18 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日16:29:04 内容:一维差分算法模板 心得:构造b数组 使得 a[i] 为 b[i] 的前缀和 */ 给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c 阅读全文
posted @ 2022-01-24 14:18 飘向远方丶 编辑
摘要:/* 时间: 2021年12月20日16:48:48 内容: 二维差分算法模板 心得: 画图加深理解 */ 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c: s[x1][y1] += c; s[x1][y2+1] -= c; s[x2+1][y1] -= c; s[ 阅读全文
posted @ 2022-01-24 14:18 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日09:11:40 内容:前缀和 心得:~ */ s[i] = s[i-1] + q[i]; // 前缀和数组 s[] s[r] - s[l-1] = q[l] + ... + q[r]; 阅读全文
posted @ 2022-01-24 14:17 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日08:51:02 内容:高精度乘低精度模板 心得:注意11行,如果A走完了,但是t不为0,仍需要将t并入C中 */ vector<int>mul(vector<int>A, int b) { vector<int>C; int t = 0; // 进位 for(in 阅读全文
posted @ 2022-01-24 14:16 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日08:58:29 内容:高精度除以低精度模板 心得:r要引用,这样才可以改变r的值 */ vector<int>div(vector<int>&A, int b, int &r) { vector<int>C; r = 0; // 余数 for(int i = A. 阅读全文
posted @ 2022-01-24 14:16 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日08:41:10 内容:高精度减法模板 心得:这默认A>B,我们可以通过bool Judge函数判断A是否大于B,然后就是t进位的细节 */ vector<int>sub(vector<int>A, vector<int>B) { vector<int>C; int 阅读全文
posted @ 2022-01-24 14:15 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日08:23:32 内容:高精度加法模板(vector版) 心得: 注意最后的t如果不为0的话,C还要再进1位; 另外,A>0,B>0;当A<0,B>0,我们可以用B-A减法模板;当A<0,B<0,我们可以用-(A+B)加法模板等等~ */ vector<int>ad 阅读全文
posted @ 2022-01-24 14:14 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日00:40:08 内容:浮点数二分算法模板 心得:浮点数二分模板比较简单,但是要注意***题目要求的精度是多少*** */ bool check(double x) {/* ... */} // 检查x是否满足某种要求的性质 double bsearch(doubl 阅读全文
posted @ 2022-01-24 14:13 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日00:34:30 内容:二分算法模板 心得:再用二分模板时,要注意check()满足的是哪一种性质,不要弄反了,另外while循环条件是否取等号也是一个值得思考的问题 */ bool check(int x) { /* ...*/ } // 检查x是否满足某种所要求 阅读全文
posted @ 2022-01-24 14:12 飘向远方丶 编辑
摘要:/* 时间:2021年12月20日00:03:43 内容:归并排序算法模板 心得: 归并排序一定要理解归并的过程,以及递归的过程! */ void merge_sort(int q[], int l, int r) // 给定数组,左边界,右边界 { if(l >= r) return; // 如果 阅读全文
posted @ 2022-01-24 13:12 飘向远方丶 编辑
摘要:/* 时间:2021年12月19日23:51:40 内容: 快速排序算法模板 心得: 在使用快排的时候,一定要注意循环结束的条件,以及递归处理左边,右边的边界~ */ // 这里我们实现从小到大排序 如果要实现从大到小排序 我们只需要改第13 14行 ~ void Quicksort(int q[] 阅读全文
posted @ 2022-01-24 13:11 飘向远方丶 编辑
摘要:列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。请你对 arr 应用下述算法: 从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。不断重复这两步,从左到右和从右到 阅读全文
posted @ 2022-01-02 12:54 飘向远方丶 编辑

点击右上角即可分享
微信分享提示