蓝桥杯学习笔记(Java)
蓝桥杯学习笔记
兔唧唧不秃
这个作者很懒,什么都没留下…
展开
-
子串分值(Java)
子串分值(Java) 分析 每个字母的贡献 = (该字母当前的位置 - 上一次出现的位置)* (下一次出现的位置 - 该字母当前的位置) 子串分值 = 各个位置字母的贡献之和 问就是我也想不到这个方法😭 但是,按我的理解这个公式是这样的: 话不多说上代码 public class Main{ //记录上一个出现的位置 static int pre[]; //记录下一个出现的位置 static int next[];原创 2022-02-26 22:28:00 · 549 阅读 · 2 评论 -
砝码称重(Java)
将砝码独立来看, 在当前砝码称出重量x的情况下,对于砝码i都有三种操作: 1. x+砝码i的重量(放同侧) 2. x-砝码i的重量(放异侧) 3. x(不放) 显然前面两种操作才有可能产生不同的重量。 另外砝码i一定能称出其自身的重量 又考虑到set能够用于排除相等的元素 由于砝码称出的重量是正的,因此将操作获得的结果取绝对值再放入集合中原创 2022-02-24 23:48:23 · 1785 阅读 · 0 评论 -
最短路问题(Dijkstra、Bellman-Ford、Floyd、SPFA)
最短路问题Dijkstra伪代码Bellman-FordFloyd Dijkstra (加点法) 适用于边权为正的情况 适用于有向图和无向图 可用于计算正权图上的单源最短路,即从单个源点出发,到所有结点的最短路。 伪代码 清除所有点的标号 设d[0] = 0,其他d[i] = INF 循环n次{ 在所有未标号的结点中,选出d值最小的结点x 给结点x标记 对于从x出发的所有边(x,y),更新d[y] = min{d[y], d[x]+w(x,y)} } memset(v, 0, sizeof(v原创 2022-02-20 10:57:18 · 84 阅读 · 0 评论 -
没有上司的舞会——树状DP(Java)
题目 分析 输入: 5 1 2 3 4 5 1 2 1 3 2 4 2 5 输出: 12 首先建立对应的树 依题意,不能同时选择孩子与双亲 代码 import java.util.Arrays; import java.util.Scanner; public class Main { final static int max = 100010; static class edge{ int to, next; public edge(int to, int next) { //原创 2022-02-20 10:02:18 · 400 阅读 · 0 评论 -
k好数(Java)
k好数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。 输入格式 输入包含两个正整数,K和L。 输出格式 输出一个整数,表示答案对1000000007取模后的值。 样例输入 4 2 样例输出 7原创 2022-02-19 13:49:03 · 111 阅读 · 0 评论 -
最大最小公倍数
最大最小公倍数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 10^6。 分析 贪心 n个数的最小公倍数一定大于等于这n个数中任意一个数 因此,1~N中任选三个数的最大最小公倍数应从最大的三个数开始考虑。 可能出现以下几种情况:原创 2022-02-18 22:13:58 · 141 阅读 · 0 评论 -
区间k大数查询
区间k大数查询 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 K大的数是哪个。序列元素从1开始标号。 样例输入 5 1 2 3 4 5 2 1 5 2原创 2022-02-17 12:08:46 · 102 阅读 · 0 评论 -
八、十、十六进制相互转换(Java)
八、十、十六进制相互转换十进制转十六进制常规做法快速做法十六进制转十进制常规做法快速做法十六进制转八进制常规做法快速做法 十进制转十六进制 常规做法 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String h[] =原创 2022-02-17 11:41:07 · 300 阅读 · 0 评论 -
Fibonacci数列(Java)
圆的面积 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明: 在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数原创 2022-02-15 23:43:20 · 108 阅读 · 0 评论 -
圆的面积(Java)
圆的面积 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定圆的半径r,求圆的面积。 输入格式 输入包含一个整数r,表示圆的半径。 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明: 在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍原创 2022-02-15 15:57:03 · 178 阅读 · 0 评论 -
01字串(Java)
序列求和 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。 输入格式 本试题没有输入。 输出格式 输出32行,按从小到大的顺序每行一个长度为5的01串。 样例输出 00000 00001 00010 00011 <以下部分省略> 方法一、 public class Main{ p原创 2022-02-15 14:29:04 · 458 阅读 · 0 评论 -
蓝桥杯笔记
蓝桥杯笔记一、注意事项二、练习题基础练习 一、注意事项 注意Java的主类名必须是Main 注意数据规模 比如:A、B为整数且-10000 <= A,B <= 10000 此时可以用int来接收A、B,但如果超过int的范围则要考虑其他方法来保存大数(Integer、long等) 二、练习题 基础练习 试题编号 试题名称 BASIC-02 ...原创 2022-02-15 11:50:41 · 267 阅读 · 0 评论 -
序列求和(Java)
序列求和 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 求1+2+3+…+n的值。 输入格式 输入包括一个整数n。 输出格式 输出一行,包括一个整数,表示1+2+3+…+n的值。 样例输入 4 样例输出 10 样例输入 100 样例输出 5050 数据规模与约定 1 <= n <= 1,000,000,000。 方法一、 import java.util.Scanner; public class Main { public static void原创 2022-02-15 11:47:47 · 378 阅读 · 0 评论