学习记录与分析
文章平均质量分 89
北比臼_
这个作者很懒,什么都没留下…
展开
-
第八节 数论
最大公约数1、求最大公约数欧几里得算法——辗转相除法(a, b) 最大公约数gcd(a, b) 最小公约数lcm(a, b)理论基础:gcd(a, b) = gcd(b, a mod b)//核心代码int gcd(int a, int b){ return b > 0 ? gcd(b, a % b) : a;}AcWing 1246. 等差数列数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。现在给出这 N 个整数原创 2021-04-20 18:51:34 · 195 阅读 · 0 评论 -
第七讲 贪心
理论贪心算法题性质:1、跳跃性很强2、结论证明很难解决办法1、找相似2、猜贪心的具体含义:1、找一个最优解2、短视(看重眼前的局势,不会考虑后面)AcWing 1055. 股票买卖 II给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入格式第一行包含整数 N,表示数组长度。第二行包原创 2021-04-11 12:07:55 · 577 阅读 · 0 评论 -
第六讲 双指针、BFS与图论、单链表
双指针所有类似这样的算法都是双指针算法,时间复杂度为O(n)AcWing 1238. 日志统计小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N 行。其中每一行的格式是:ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。具体来说,如果存在某个时刻 T 满足该帖在 [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于原创 2021-04-04 21:46:10 · 217 阅读 · 0 评论 -
第五讲 树状数组和线段树和差分
要点树状数组包含于线段树,能用树状数组解决的就用,不可以的就用线段树。树状数组可以快速的求前缀和给某个位置上的数加上一个数求某一个前缀和区域查询,单点修改第n层:前一层的数加上当前项… …第2层:前一层的数加上当前项第1层:前一层的数加上当前项第0层:奇数项指向自己我们可以发现,每一个树状数组的位置保存的都是原数组的一段连续数字的和如何确定层数呢?看每一个位置的数的二进制后面有多少个连续的0,就是在第几层。然后c[x]里面的值等于[x-2k, x]如何求2k的原创 2021-03-31 18:46:34 · 656 阅读 · 0 评论 -
java算法避坑经验贴 ——个人向
int i = 3;while (i – > 0){} 的结果是 2,1, 0;这里的运行顺序是,i > 0 --> i - 1 --> 花括号内代码原创 2021-03-21 17:23:51 · 199 阅读 · 0 评论 -
第四讲 枚举、模拟与排序
AcWing 1210. 连号区间数小明这些天一直在思考这样一个奇怪而有趣的问题:在 1∼N 的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间 [L,R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 R−L+1 的“连续”数列,则称这个区间连号区间。当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式第一行是一个正整数 N,表示排列的规模。第二行是 N 个不同的数字 P原创 2021-03-20 22:41:14 · 347 阅读 · 0 评论 -
闫式DP分析法
从集合角度来分析DP问题(闫式DP分析法)1、化零为整、化整为零最值、个数(本质是问,每一个方案的某种属性,有可能是问我们所有方案的最大值、或者个数)如果直接枚举所有方案一般都会超时,所以就会用到化零为整的思想:1、就是发掘所有方案之间的共同关系,然后把具有共同关系的方案放到一个集合里面去,2、求一下每个集合的具体的值:集合划分,就是把一个集合划分为若干个子集然后分别求解,也就是化整为零常见DP模型:1、01背包(组合模型)2、路线模型(按照规则走)3、线性模型(最长子序列问题)4、以上原创 2021-03-17 21:56:06 · 261 阅读 · 0 评论 -
ACwing 蓝桥杯 第三讲 数学与简单DP(java)
AcWing 1205. 买不到的数目小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入格式两个正整数 n,m,表示每种包装中糖的颗数。输出格式一个正整数,表示最大不能买到的糖原创 2021-03-13 21:35:37 · 612 阅读 · 1 评论 -
AcWing蓝桥杯-第二讲 二分与前缀和(java)
原理整数二分第一类:ans是红色右端点将[ L , R ] 分成 [ L , M - 1] , [ M , R ].代码:while(L < R){ M = (L + R + 1)/2; if M在红内 L = M; else R = M - 1;}为什么要加1呢?举个例子:L = R - 1(只剩下两个数时)M = (L + R) / 2 = L (向下取整)if M在红内时 L = M = L (无变化,会进入死循环)第二类: ans是绿色区原创 2021-03-08 22:41:59 · 408 阅读 · 0 评论 -
AcWing蓝桥杯第一讲递归与递推总结(Java)
目录高效率输入输出输入输出AcWing 92. 递归实现指数型枚举思路高效率输入输出输入import java.io.*;import java.util.Scanner;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));StreamToke原创 2021-03-03 13:04:20 · 773 阅读 · 1 评论