基础算法
基础算法
排序
二分
高精度
前缀和与差分
双指针算法
位运算
离散化
区间合并
SoKeeGumpCN
瞎混
展开
-
HDU1219 AC Me(简单字符串)
Problem临时碰到的一个简单字符串处理,也做了,非常水的题。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;class Main { static BufferedReader br = new Buff...原创 2020-04-04 14:19:07 · 111 阅读 · 0 评论 -
AcWing 1238. 日志统计(双指针)
Problem第九届蓝桥杯的题目,暴力会超时,这里用双指针优化。import java.io.*;import java.util.Arrays;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static PrintW...原创 2020-02-27 15:52:59 · 216 阅读 · 0 评论 -
AcWing 1237. 螺旋折线(找规律)
Problem第九届蓝桥杯B组省赛题,前年比赛我还记得最后时刻写了暴力交上去,但是写的结构很差,是用递归写的,没有想到应该找规律直接O(1)过的。这个临时又写了个暴力import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { sta...原创 2020-02-26 16:13:27 · 323 阅读 · 0 评论 -
AcWing 1232. 三体攻击(三维差分)
差分和前缀和互为逆运算,这个题用三维差分,三维只是比较麻烦,和容斥原理比较类似。Problem好像是A组第六题,蓝桥杯省赛第六题居然已经这么难了?因为保证矩阵行列相乘小于1e6但不知道行和列分别有多大,所以需要用到数组下标映射,也就是代码中的public static int get(int i, int j, int k){...}import java.io.BufferedRea...原创 2020-02-26 14:24:38 · 459 阅读 · 3 评论 -
AcWing 1241. 外卖店优先级 (模拟)
Problem这个题是第十届也就是这次比赛好像是第六题还是第七题,是一道模拟外卖系统的题目,题目描述很简单,有外卖就加分,没有减分,分数大进缓存系统,少了出系统,模拟就可以,但是数据量有点大,单单的暴力模拟最后的满数据过不了。优化方法是将相同订单批次处理。AC代码:import java.io.*;import java.util.Arrays;class Main { st...原创 2020-02-15 15:20:28 · 179 阅读 · 0 评论 -
AcWing 788. 逆序对的数量 (归并)
Problem在分治后的每一层合并中顺便求出逆序对数量是这个题想法的由来,归并排序分治我们求的是从小到大的顺序,我们所求的逆序对恰好是逆序数量,与归并排序不谋而合。例如[3,4,1,2]中q[0]>q[2],则q[0],q[1]都与q[2]成逆序对,而q[mid]与q[i]有mid-i+1个数字,因此逆序对增加mid-i+1import java.io.BufferedReader;...原创 2020-02-15 12:10:19 · 212 阅读 · 0 评论 -
AcWing 1231. 航班时间 (日期时间)
Problem同样是恶心的时间问题,这个题有点类似初中物理的流水划船问题,正解是两次的时间相加除以2就可以了。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main { ...原创 2020-02-14 14:32:34 · 166 阅读 · 0 评论 -
AcWing 1229. 日期问题 (枚举)
Problem很恶心的日期问题,很容易楼某个特殊的数据。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main { static BufferedReader br...原创 2020-02-14 10:29:09 · 162 阅读 · 0 评论 -
AcWing 1219. 移动距离 (水题)
将点数转换成坐标即可Problemimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader br = new BufferedRea...原创 2020-02-13 16:29:39 · 151 阅读 · 0 评论 -
AcWing 466. 回文日期 (枚举)
Problem水题这个题的简便之处在于输入模式的固定,固定的八位数,固定前四位年份依次是月份和天。因为一年的年份不会变,所以一年最多有一个回文数,只需要枚举一次即可,依次枚举判断即可,要注意闰年的判断,闰年分为普通闰年和世纪闰年普通闰年的条件是if (year % 4 == 0 && year % 100 != 0) return true;世纪闰年:if (yea...原创 2020-02-13 12:00:38 · 230 阅读 · 0 评论 -
AcWing 1204. 错误票据 (水题)
前两题想AC有难度没想到后两题都是水题。Problemimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.Arrays;class Main { static ...原创 2020-02-12 23:06:53 · 183 阅读 · 0 评论 -
AcWing 1245. 特别数的和 (枚举)
这个题就比较简单了,也是去年B组的一题。添加链接描述循环一边,依次判断。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Main { static BufferedReader ...原创 2020-02-12 22:39:48 · 119 阅读 · 0 评论 -
AcWing 1236. 递增三元组(枚举 + 二分||前缀和)
Problem这个题的数据量比较大,单纯的暴力是O(n3),次数会达到1015,这是在搞笑,得亏蓝桥是OI赛制,否则这个题AC个人觉得是比较困难的,但是经过学习提示以后这个题也不难,主要就是枚举b这个数组,因为如果枚举a,b和c的关系不稳定,需要再一层枚举去控制b和c的关系(枚举c的道理一样),所以首先想到枚举b以后优化a和c,具体优化方法有2个,二分法和前缀和法。第一个方法二分,需要将三个...原创 2020-02-12 20:16:09 · 309 阅读 · 0 评论 -
AcWing 1210. 连号区间数(枚举)
Problem这个题的数据量是104,暴力枚举+排序+依次判断是要超时的因为题面说了1-N,N个数的排列,那么没有重复的数,直接列首列尾的差值可以反应是否已经排好序,则可以省略判断和排序的时间。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import ...原创 2020-02-11 12:31:04 · 149 阅读 · 0 评论 -
AcWing 1216. 饮料换购 (简单分析)
Problem就是三个瓶盖换一个,瓶盖数++,不知道哪年的题目,水题import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main { static BufferedReader br = new BufferedReader(...原创 2020-02-06 10:12:39 · 220 阅读 · 0 评论 -
AcWing 1230. K倍区间 (前缀和)
第八届蓝桥杯省赛第十题Problem前缀和优化后时间N2,对于1e5的数据量依旧超时这里用一个存余数的技巧AcWing倒师傅的题解有了这个结论之后,我们就可以使用两层for循环来计数k倍区间的个数,但是由于数据比较大,我们不能这样做。那么我们能不能在计算前缀和的过程中同时来统计k倍区间的个数呢?当然可以。我们可以用一个数组cnt,规定cnt[i]表示当前位置之前,前缀和取模后等于i的个数,...原创 2020-02-05 14:33:48 · 220 阅读 · 0 评论 -
AcWing 99. 激光炸弹 (前缀和)
Problem这个题蛮有意思,题面保证覆盖范围是一个正方形,战场的长宽在5k以内,可以一次遍历范围,计算区域内总和可以联想到二维前缀和。然后再处理一些代码中的边界,细节问题即可。顺便再看一下JVM优化过的Java代码,学习到了静态块的应用以及JVM最基础的优化代码模块。//// Source code recreated from a .class file by IntelliJ ID...原创 2020-02-05 11:45:13 · 148 阅读 · 0 评论 -
AcWing 1227. 分巧克力 (二分)
Problem枚举所有可能出现的正方形,利用二分优化。O(NlogN)import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.Arrays;import java.util.HashMap;public class Main...原创 2020-02-04 19:13:20 · 254 阅读 · 0 评论 -
AcWing 1221. 四平方和 (哈希 or 二分)
Problem这个题暴力需要至少三层循环,每层大概106严重超时。优化方法是将四个数分成两拨运算,例如abcd是答案的四个数,先算出a和b,然后temp = n - a - b再运行循环找出能凑出temp 的c和d,具体寄存方法有二分法和哈希表。方法一:二分法 (N2logN)C++描述:#include <cstring>#include <iostream>...原创 2020-02-02 14:19:27 · 230 阅读 · 0 评论 -
AcWing 730. 机器人跳跃问题(二分)
Problem初看题是看不出要用二分的,但是题目要求找出符合条件最小的E,这个就是符合二分的条件,最值,单调性,因为所有大于E的值都可成立。import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main { static Buf...原创 2020-02-01 17:17:18 · 296 阅读 · 0 评论 -
AcWing 116. 飞行员兄弟 (枚举)
这个题好像和飞行员还有兄弟之间没任何关系…正题Problem按按钮的问题类似,不过这个题更麻烦一点,一次按按钮会联动整行整列,没有特别好的办法去整理一个公式或者什么来求解,题面是4*4的方格,不妨考虑暴力枚举法,因为一个按钮不可能重复按两次,否则无意义,于是选择也只有216个选择,再加上判断,反转一些操作,复杂度是可以接受的。import java.io.BufferedReader;i...原创 2020-01-30 17:26:31 · 276 阅读 · 0 评论 -
AcWing 1209. 带分数(枚举+分块)
很久之前做到过这个题,相较于上次,现在熟悉了dfs的模板后会更加轻松,但是在分块判断上出了一些问题。添加链接描述import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main {...原创 2020-01-30 15:45:33 · 198 阅读 · 0 评论 -
AcWing 93. 递归实现组合型枚举 (组合递归)
相比较上面的排列枚举,这个题把重复的去掉了,可在排列时增加序列性,实施起来就是枚举后位>前位Problemimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main {...原创 2020-01-29 11:59:32 · 396 阅读 · 0 评论 -
AcWing 95. 费解的开关(推理)
非常经典的开开关题目,按一个按钮周围四个方向都会改变,这个题目就是一行一行确定。大致解题思路:这道题目首先看一眼,我们就可以知道必然与位运算有着密切的关系,因为出现了0和1,这是一个重要的发现,接着我们在仔细分析题意,我们知道如果纯暴力枚举的话,必然是会超时的,那么如何优化呢?因此我们需要从题目中找出非常有用的性质来优化,这是一个大致的思路方向每一个位置顶多只会操作一次。因为如果操作两次的话,...原创 2020-01-28 16:48:34 · 244 阅读 · 0 评论 -
AcWing 94. 递归实现排列型枚举 (全排列)
做过这个题,基础题,递归解决全排列。Problem网上有一些比较奇怪的做法例如位运算,可以了解了解,掌握比较困难。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main ...原创 2020-01-26 11:48:43 · 353 阅读 · 0 评论 -
AcWing 92. 递归实现指数型枚举 (递归)
这个系列是蓝桥杯的训练,为了蓝桥杯,同时也是日常的算法训练。第一题是递归,有点类似递归的全排列的做法,复习基本的递归模板。Problemimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public...原创 2020-01-26 11:15:26 · 460 阅读 · 0 评论 -
LeetCode 560. 和为K的子数组 (前缀和)
LeetCode 暑期打卡第七周题五题目:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7...原创 2019-09-30 19:02:39 · 241 阅读 · 0 评论 -
LeetCode 56. Merge Intervals (Merge Intervals module) Described by Java
Given a collection of intervals, merge all overlapping intervals.Example 1:Input: [[1,3],[2,6],[8,10],[15,18]]Output: [[1,6],[8,10],[15,18]]Explanation: Since intervals [1,3] and [2,6] overlaps, m...原创 2019-10-22 23:43:22 · 86 阅读 · 0 评论 -
AcWing 802. 区间和(Descretization) Described by Java
The damn thing fucked me a whole day.As last article said , the value is to large to 109, we should descretizate the value.假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。近下来,进行 m 次询问,每个...原创 2019-10-21 01:17:08 · 177 阅读 · 2 评论 -
4 methods to traversal Java' s Map
Frompublic static void main(String[] args) { // 循环遍历Map的4中方法 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); map.put(1, 2); // 1. entrySet遍历,在...转载 2019-10-20 20:49:12 · 79 阅读 · 0 评论 -
The function "unique" in C++ achieved by Java
When we need to use discretization algorithm , We need to use a function like ‘unique’ in C++ , but in Java no such method. So we write it now.First to introduce the discretization .when we need to ...原创 2019-10-20 05:41:12 · 112 阅读 · 0 评论 -
AcWing 801. 二进制中1的个数(Bit operation) Described by Java
The basic algorith , bit operation.Basic has two module .One , (n >> k & 1) is to cal the ith of a number is 0 or 1.For example , n = 10 = (1010)2,so n >> 0 & 1 = 0;n >>...原创 2019-10-19 22:56:05 · 226 阅读 · 0 评论 -
AcWing 799. 最长连续不重复子序列(Double pointer) Described by Java
I didn’t think that the familiar double-pointer algorithm unexpectedlytook half a whole day. Fuck me.Get the problem first :给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100...原创 2019-10-19 19:41:20 · 235 阅读 · 0 评论 -
AcWing 786. 第k个数 (Quick_Select) Described by Java
The general idea of quick selection is consistent with quick sorting, selecting an element as a baseline to partition elements, and dividing elements smaller than and greater than the baseline into tw...原创 2019-10-18 15:43:43 · 154 阅读 · 0 评论 -
AcWing AcWing 798. 差分矩阵 (Two-dimensional Difference) Descrited by Java
After know the one-dimensional difference , we got two-dimensional difference.It 's same and simple .The problem :输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标...原创 2019-10-18 04:34:20 · 139 阅读 · 0 评论 -
AcWing 797. 差分 (Difference) Described by Java
The word ‘Described’ is misspelled , and fuck me.Next exercise is to train difference method.Last article we told about Prefix , now the difference and prefix like the Integral and differential, whi...原创 2019-10-18 03:38:29 · 213 阅读 · 2 评论 -
AcWing 796. 子矩阵的和 (Prefix Sum) Describted by Java
Today train Prefix sum , two dimensional is a little complex than one dimensional,but it is not a big deal.The problem:输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵...原创 2019-10-17 17:23:42 · 310 阅读 · 0 评论 -
AcWing 790. 数的三次方根 (Binary) Describted by Java
A simple problem about training binary.给定一个浮点数n,求它的三次方根。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000Method : BinaryLike the square bi...原创 2019-10-17 05:04:10 · 165 阅读 · 0 评论 -
AcWing 789.数的范围 (binary search) Describted by Java
To train the Binary , we found the question.AcWing 789给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),...原创 2019-10-16 19:29:42 · 112 阅读 · 0 评论 -
ACM - Binary (Basic algorithm) Describted by Java
Binary ModuleThe difficulty is to know when we should use binary.Below gives 2 modules:Code : public static int binary_1(int l, int r) { while (l < r) { int mid = l + r >...原创 2019-10-16 18:43:41 · 96 阅读 · 0 评论