摘要: 辗转相除法(欧几里得算法) Gcd(a,0)=a C++内置函数__gcd 不要用,CCf不让用,发现会凉 求x,y的一组解 用到扩展欧几里得 exgcd P1082 所以每一层都有解x,y 最后一层的x,y最好求 Then x’=y , y’=x-y*|a/b| 大佬yue: NOIP 300线 阅读全文
posted @ 2019-05-02 07:43 晔子 阅读(2012) 评论(0) 推荐(0) 编辑
摘要: 最长上升子序列 (反正这个oj我做不了) 洛谷:AT2827 LIS 题解: 1.DP(TLE) 这是一道最为经典的完全用动态规划来解决的问题。 ◦ 设dp[i]为以a[i]为末尾的最长上升子序列的长度。 ◦ 最后的答案就是我枚举一下最长上升子序列的结束位置,然后取一个dp[i]最大值即可。 ◦ 问 阅读全文
posted @ 2019-04-30 19:22 晔子 阅读(277) 评论(0) 推荐(0) 编辑
摘要: DAY 3 2019.4.30 动态规划DP Dp是一个很抽象的东西 方法没有明显区别,很难总结套路 啥是DP? DP等价于DAG!!! (1)无后效性:DP的所有状态之间组成一个DAG (2)最优子序列 (3)阶段性 (4)转移方程:如何计算状态 一般是顺序转移 有时候乱序,因为DP 是DAG,可 阅读全文
posted @ 2019-04-30 14:01 晔子 阅读(201) 评论(0) 推荐(0) 编辑
摘要: DAY 2 2019.4.29 比如:依次输入 3 1 5 4 2 插入 6 这里FZdalao有一个很巧妙的构造,直接吧输入的数字排成一个二叉搜索树,方便以后操作 把mid作为根节点,两边排 说白了,删掉一个数,就用这个数左子树最大值或是右子树最小值替换他,并把父辈祖辈size-1 size[x] 阅读全文
posted @ 2019-04-29 23:01 晔子 阅读(208) 评论(0) 推荐(0) 编辑
摘要: DAY 1 2019.4.28 例题1 题解: 例题2 题解: 例题3 题解: vis[ ]判断是否为素数,pri[ ]储存素数 例题4 题解: 例题5 题解: PS: i < 1<<n i<2^n (1<<j)& i 如果2^j最后一位和 i 相同,返回1 例题6 判回文数是N√N,素数NlogN 阅读全文
posted @ 2019-04-29 07:49 晔子 阅读(261) 评论(0) 推荐(0) 编辑
摘要: P1177 【模板】快速排序 【 堆排序 】 时间复杂度:O(nlogn) PS:OI界的log都是以2为底数 空间复杂度:O(n) [ 代码 ]: #include<bits/stdc++.h> using namespace std; long long n,x,heap_size; int h 阅读全文
posted @ 2019-04-26 21:33 晔子 阅读(361) 评论(0) 推荐(0) 编辑
摘要: P1090 合并果子 本题要用到堆 一个小根堆 每次取出两堆,合并成一堆,为了让多多花费体力最少,我们要尽量少的重复大堆的合并,因此每次合并完以后,要把新的一坨放到堆里排一排,维护一个堆 有必要强调一下这个合并的操作: (1)取出最小的一个(或一坨)果子 x (2)再取出最小的一个(或一坨)果子 y 阅读全文
posted @ 2019-04-26 21:01 晔子 阅读(361) 评论(0) 推荐(0) 编辑
摘要: P3371 【模板】单源最短路径(弱化版) SPFA算法: SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同,为 O(VE)。 SPFA和Dijkstra不同的是: 阅读全文
posted @ 2019-04-26 20:00 晔子 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 1347:【例4-8】格子游戏 并查集的二维升级版(简称寻找二维爹自己起的) 也就是他们自己变成了二维坐标,父结点自然也要变成二维啦 代码: 阅读全文
posted @ 2019-04-23 19:12 晔子 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: P3367 【模板】并查集 阅读全文
posted @ 2019-04-23 18:37 晔子 阅读(308) 评论(0) 推荐(0) 编辑