算法学习
文章平均质量分 81
包括学习到的一些算法,以及练习的题目
理想-
越自律越自由
展开
-
第十一届蓝桥杯国赛JavaB组题解
第十一届蓝桥杯国赛JavaB组题解原创 2023-06-05 22:00:04 · 1070 阅读 · 1 评论 -
第十二届蓝桥杯国赛JavaB组题解
第十二届蓝桥杯JavaB组决赛题解(前八道)原创 2023-05-31 11:46:00 · 1227 阅读 · 0 评论 -
第十三届蓝桥杯国赛JavaB组题解
初始的想法是保存每个数的位置,当某个数左移的时候,左边的每个数的位置都+1,右边的数不变;当某个数右移的时候,右边的每个数的位置都-1,左边的数不变,自然而然想到了差分,算出位置后,接着再根据位置输出即可。bfs求最短路,从终点一次bfs可以求得到所有点的最短距离,将所有点的最短距离相加再除以点数即可得到最短距离的数学期望。后来想到了用双链表进行求解,每次交换位置的时候要先删除再插入,在插入的时候更新元素的位置。枚举不同的时刻,判断哪些时刻秒针和分针表示的数字是相同的。,显然会超时,这种做法不可取。原创 2023-05-22 16:47:23 · 1602 阅读 · 0 评论 -
蓝桥杯集训·每日一题Week4
spfa floyd prim kruskal lca 二分图匹配 匈牙利算法原创 2023-03-22 21:34:43 · 491 阅读 · 0 评论 -
蓝桥杯集训·每日一题Week3
Trie BFS DFS 拓扑排序 Dijkstra原创 2023-03-21 18:55:18 · 696 阅读 · 0 评论 -
蓝桥杯集训·每日一题Week2
递归 并查集 哈希表 KMP原创 2023-03-18 11:04:01 · 430 阅读 · 0 评论 -
蓝桥杯集训·每日一题Week1
前缀和 差分 二分 双指针 递推原创 2023-03-10 11:03:13 · 511 阅读 · 0 评论 -
AcWing蓝桥杯辅导课:第三讲 数学与简单DP
数学与简单DP原创 2023-03-02 11:26:06 · 435 阅读 · 1 评论 -
AcWing蓝桥杯辅导课:第二讲 二分与前缀和
二分与前缀和的相关题目原创 2023-02-28 14:12:27 · 637 阅读 · 0 评论 -
AcWing 数学知识
质数 约数 欧拉函数 快速幂 扩展欧几里得算法 中国剩余定理 高斯消元 求组合数 容斥原理 博弈论原创 2023-01-03 16:54:26 · 1105 阅读 · 2 评论 -
AcWing贪心
区间问题 Huffman树原创 2023-01-02 18:24:40 · 123 阅读 · 0 评论 -
AcWing算法学习之动态规划(基础)
本文根据AcWing的算法基础课动态规划专题缩写,介绍了动态规划的几种模型以及相关例题,包括背包问题、线性DP、区间DP,计数类DP、状态压缩DP、树形DP、记忆化搜索。原创 2022-12-24 21:43:29 · 538 阅读 · 0 评论 -
AcWing 搜素与图论
搜索 树与图 最短路 正权图负权图 最小生成树 二分图原创 2022-11-26 16:10:42 · 767 阅读 · 2 评论 -
AcWing 数据结构
AcWing 数据结构专题学习 链表 栈 队列 并查集 Trie 堆 哈希表原创 2022-11-18 11:07:11 · 567 阅读 · 0 评论 -
AcWing基础算法
AcWing算法基础学习 快速排序 归并排序 二分 高精 前缀和 差分 双指针 位运算 离散化 区间合并原创 2022-10-28 16:57:42 · 2141 阅读 · 0 评论 -
【BFS】LintCode刷题笔记
1911 · 地图分析LintCode原题链接:1911 · 地图分析题目分析将所有的陆地压入队列中,在宽搜即可。主要要将所有的路径初始化为-1。源码public class Solution { /** * @param grid: An array. * @return: An integer. */ static final int N = 105; static int[][] dist = new int[N][N]; st原创 2022-04-07 14:04:57 · 726 阅读 · 0 评论 -
算法学习之图论
题目题目描述:原题链接题目分析输入输出输入输出源码原创 2022-04-07 09:34:04 · 204 阅读 · 0 评论 -
【DP专题】LintCode刷题笔记
669、换硬币LintCode原题链接:669 · 换硬币题目分析设f[i]为需要多少硬币来凑出i,以最后一个硬币硬币为突破口,假设最后一个硬币值为a,则只需算出f[i-a]的值为多少,加一即可,是一个典型的动态规划问题,若凑不出来则置为-1。源码public class Solution { /** * @param coins: a list of integer * @param amount: a total amount of money amount原创 2022-04-03 17:42:33 · 2476 阅读 · 13 评论 -
第十二届蓝桥杯Java B组题解
A.ASC题解76B.卡片题目分析突破口在于如果当前卡片的数量小于0,则输出当前卡片表示的数的前一个数。若当前卡片足以表示一个数时,更新答案。题解3181import java.util.Arrays;/** * @Description * @Author:PrinceHan * @CreateTime:2022/2/22 19:11 */public class Main { public static void main(String[] args) {原创 2022-02-24 09:26:47 · 1463 阅读 · 1 评论 -
2019第十届蓝桥杯C/C++省赛B组
1.C分析:该题为三阶斐波那契数列的求解问题,由于数据较大,受数据类型内存空间影响,int,long,long long等数据内存空间不足,不能直接计算。在这里,只需要取后四位,可以参考取模运算(%10000)获得后四位数值。代码如下:#include<stdio.h>int a[20190324];//数组原创 2021-02-05 21:12:25 · 600 阅读 · 2 评论 -
第十一届蓝桥杯Java B组题解
A.门牌制作题解624#include<iostream>using namespace std;int nums[10];void solve(int i){ while(i) { nums[i%10]++; i /= 10; }}int main(){ for(int i = 1; i <= 2020; i++) solve(i); cout << nums[2]原创 2022-02-06 10:39:54 · 1336 阅读 · 0 评论 -
字符数组判断超大偶数
字符数组判断超大偶数前几天做题发现了一个很有意思的题目,给定一个数字长度10000以上的数字,判断是否为偶数,偶数的话能被2整除,对其进行取模运算,模2余数为0.但该数字过大时,即使使用long long int也无济于事,这里使用字符数组。求出数字的最后一位,判断其是否为偶数即可。*代码如下*#include<bits/stdc++.h>using namespace std;char a[10005];//数组稍微开大一点int main(){ int len;原创 2021-03-06 23:03:20 · 433 阅读 · 0 评论 -
算法学习之贪心
1. 部分背包问题题目来自洛谷,原题链接:https://www.luogu.com.cn/problem/P2240题目描述阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N(N≤100) 堆金币,第 i 堆金币的总重量和总价值分别是 mi,vi(1≤mi,vi≤100)。阿里巴巴有一个承重量为 (T≤1000) 的背包,但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。请问阿里巴巴最多可以拿走多少价值的金原创 2022-03-19 21:12:32 · 667 阅读 · 0 评论 -
C语言中的几种排序算法
C语言中的几种排序算法在编程练习时,我们经常会遇到一些将一串乱序的数字排列成有序的数列(递增,递减)的问题,以此起到解决问题的效果。目前我使用的比较熟练的有三种排序算法,冒泡排序法,快速排序法,另外一个是C++中的sort算法。冒泡排序法冒泡排序法是比较好理解,硬排的一种算法,缺点是当数列的元素过大时,排序的效率会比较低,时间复杂度会比较高。最好的情况时,复杂度为O(n),最差的为O(n*n),做题时经常会出现超时的现象。冒泡排序法使用两层for循环嵌套,第一层循环确定以那个元素开始比较,第二层原创 2021-03-04 22:40:24 · 3392 阅读 · 6 评论 -
ACwing 基础知识
前缀和与差分前缀和题目描述输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围:1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000输入样例:5 32 1 3 6 41 21 32 4输出原创 2022-02-09 15:34:03 · 2280 阅读 · 0 评论 -
算法学习之深度优先搜索(DFS)1
P1157 组合的输出题目描述排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r ≤ n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你输出所有组合。例如n = 5,r = 3,所有组合为:12 3 , 1 2 4 , 1 2 5 , 1 3 4 ,1 3 5 , 1 4 5 , 2 3 4 , 2 3 5 , 2 4 5 , 3 4 5输入格式一行两个自然数n,r(1<n<21,0 ≤ r ≤ n)。输出格式所有的组原创 2021-11-15 17:30:18 · 1007 阅读 · 0 评论 -
第七届蓝桥杯Java B组题解
A.煤球数目题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。有一堆煤球,堆成三角棱锥形。具体: 第一层放 1个, 第二层 3个(排列成三角形), 第三层 6个(排列成三角形), 第四层 10个(排列成三角形), … 如果一共有 100层,共有多少个煤球?题目分析找规律,观察到第i层煤球数目为i*(i+1)/2题解171700/** * @Description * @Author:PrinceHan * @CreateTime:2022/2/5 08:原创 2022-02-06 15:21:10 · 988 阅读 · 0 评论 -
第八届蓝桥杯Java B组题解
A.购物单题目描述小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。你的任务是计算出,小明最少需要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名原创 2022-01-28 15:39:24 · 7563 阅读 · 0 评论 -
日期计算(来自计蒜客)
1.蒜头君的生日## 题目如下注意:闰年二月有29天法一:公式法 蔡基姆拉尔森计算公式:W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400+1)%7 ,在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。法二:直接写代码如下:...原创 2021-03-07 10:22:46 · 725 阅读 · 0 评论 -
第十届蓝桥杯Java B组题解
文章目录A.组队题目描述题目分析B.不同子串题目描述题目分析C.数列求值题目描述题目分析题解答案D.数的分解题目描述题目分析算法题解答案E.迷宫题目描述题目分析题解F.特别数的和题目描述输入输出题解G.外卖店优先级题目描述输入输出题目分析题解H.人物相关性分析题目描述输入输出题目分析题解I.后缀表达式题目描述输入输出题目分析题解A.组队题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发原创 2022-01-23 14:08:45 · 1638 阅读 · 0 评论 -
第九届蓝桥杯本科Java B组题解【省赛】
文章目录1.第几天题目描述运行限制2.方格计数题目描述3.复数幂题目描述数据类型题解4.测试次数题目描述题目分析算法题解5.快速排序题目描述题目分析题解6.递增三元组题目描述输入输出题目分析题解7.螺旋折线题目描述输入输出题目分析题解8.日志统计题目描述输入输出题目分析题解9.全球变暖题目描述输入输出题目分析题解10.堆的计数(无题解,超出能力范围了)题目描述输入输出1.第几天题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。2000 年的 1 月 1 日,是那一年的第原创 2022-01-19 12:52:05 · 1136 阅读 · 0 评论 -
数据结构第一章 绪论
文章目录1.回文字符串2.奇偶数排列3.循环左移4.求最大值和次最大值1.回文字符串判断一个非空字符串是否是回文。#include <iostream>using namespace std;bool judge(string str){int length=str.length(); for(int i=0;i<length/2;i++) { if(str[i]!=str[length-1-i])return false; }原创 2021-10-30 11:25:30 · 195 阅读 · 0 评论 -
算法专题学习之搜索
DFS之连通性模型迷宫一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由 n∗n 的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。注意:A、B不一定是两个不同的点。输入格式第1行是测试数据的组数 k ,后面跟着 k原创 2022-02-08 19:00:53 · 489 阅读 · 0 评论