• 第十二届_国赛蓝桥杯个人模板_网格图_DFS/BFS篇

  • 第十二届_国赛蓝桥杯个人模板_全排列_DFS/BFS篇

  • 第十二届_国赛蓝桥杯个人模板_DP篇

  • 第十二届_国赛蓝桥杯个人模板_数论篇

  • 第十二届_国赛蓝桥杯个人模板_图论篇

  • 第十二届_国赛蓝桥杯个人模板_数据结构篇

国赛蓝桥杯个人模板

  • 一.基础算法
    • 1. 最大公约数和最小公倍数
    • 2. 优先队列
    • 3. Arrays.sort() _自定义降序和升序
    • 4.快速判断回文数
    • 5. 等差数列和等比数列求前N项和公式
    • 6.复数乘法__熟练掌握
    • 7.进制转换API
    • 8. 取模的技巧(用于处理非常大的数据
    • 9. 字符转数字互转换
    • 10.时间日期LocalDate__熟练掌握
    • 11. 图G的顶点数n和边数e的关系__熟练掌握
    • 12. 读取数据模板__熟练掌握
    • 13.大数模板__熟练掌握
    • 14. 数字各个位的和__熟练掌握
    • 15. 子串的截取substring()_hashset去重__熟练掌握
    • 16. 字符串API模板使用__熟练掌握
    • 17. 判断闰年__熟练掌握
    • 18. 前缀和____掌握
    • 19. 二维数组前缀和____掌握
    • 20. 差分数组 ____掌握
    • 21.常用数据结构____掌握
    • 22. 浮点数二分_掌握
    • 23. 数的三次方根二分_掌握
    • 24. 分巧克力二分_掌握

一.基础算法

1. 最大公约数和最小公倍数

 //最大公约数gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}//最小公倍数lcm(int a,int b){return a*b/gcd(a,b);}

2. 优先队列

     //默认从小到大Queue<Integer> q = new PriorityQueue<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {//直接修改这里从大到小return o1-o2;}});

3. Arrays.sort() _自定义降序和升序

        Integer[] arr=new Integer[]{2,4,3,5,7,6};Arrays.sort(arr);//升序for (int i : arr) {System.out.print(i);}System.out.println();//降序Arrays.sort(arr,new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});

4.快速判断回文数

 //判断回文数static boolean isPalindrome(String str) {String string =new StringBuilder(str).reverse().toString();return str.equals(string);}

5. 等差数列和等比数列求前N项和公式

等差数列和公式
Sn=n(a1+an)/2=na1+n(n-1)/2 d
等比数列求和公式
q≠1时 Sn=a1(1-q^n)/(1-q)

6.复数乘法__熟练掌握

复数乘法:(a+b*i)*(c+d*i)=(a*c-b*d)+(b*c+a*d)i

7.进制转换API

//十进制转换成n进制
System.out.println(Integer.toString(132, 3));//n进制转换成十进制
System.out.println(Integer.valueOf("3f3f3f3f",16));//这里代表字符串使用16进制表示
//使用大数进行转换
System.out.println(new BigInteger("3f3f3f3f", 16));

8. 取模的技巧(用于处理非常大的数据

(a * b)  % c  =  ((a % c) * (b % c) ) % c(a + b)  % c  =  ((a % c) + (b % c) ) % c

9. 字符转数字互转换


1. System.out.println('9'-'0');  //将字符减去 '0' 的到的就是数字  
2. System.out.println((char)(1+'a'));//数字转换为字符
3. Character.isLetter() //判断字符是否为字母
4.  System.out.println(Character.isDigit('2')); //是否是数字
5. System.out.println(Character.isLetter('2'));//是否是字母
6. System.out.println(Character.isWhitespace(' '));//是否是空格
7. System.out.println(Character.isUpperCase('2'));//是否是大写

10.时间日期LocalDate__熟练掌握

package 蓝桥杯模板练练练;import java.time.LocalDate;
import java.time.format.DateTimeFormatter;public class 时间日期_LocalDate {public static void main(String[] args) {LocalDate today = LocalDate.now();//查询 直接修改年份日期等System.out.println(today.getYear()); //2021System.out.println(today.getMonth()); //APRIL 英文四月System.out.println(today.getMonthValue()); //4月System.out.println(today.getDayOfWeek().getValue()); //获取当前这周的第几天System.out.println(today.getDayOfMonth()); //获取当前这个月的第几天System.out.println(today.getDayOfYear()); //获取当前这年的第几天System.out.println(today.withYear(2022));//修改该日期的年份System.out.println(today.withMonth(5));//修改该日期的月份System.out.println(today.withDayOfMonth(18));//修改该日期的月份中的第几天System.out.println(today.withDayOfYear(108));//修改该日期的年份中的第几天//判断 比较System.out.println(today.isLeapYear()); //判断闰年-366  平年-365  System.out.println(today.lengthOfYear());//该年份的长度System.out.println(today.lengthOfMonth());//该月份的长度System.out.println(today.isEqual(LocalDate.ofYearDay(2021, 104)));//比较两个年份是否相同//在原有的基础上增加年份System.out.println(today.plusYears(5));System.out.println(today.plusMonths(5)); //直接在月份上操作System.out.println(today.plusWeeks(1)); //加一周 7天System.out.println(today.plusDays(20)); //加天数//在原有的基础上减少年份System.out.println(today.minusYears(5));System.out.println(today.minusMonths(5)); //直接在月份上操作System.out.println(today.minusWeeks(1)); //加一周 7天System.out.println(today.minusDays(20)); //加天数//LocalDate和String之间的转换DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");String dateStr = today.format(fmt);System.out.println(dateStr);String str = "2019-03-03";//进行转换 LocalDate date = LocalDate.parse(str, fmt);System.out.println(date);//计算两个日期相差多少天LocalDate end = LocalDate.of(2021, 4, 18);System.out.println(today.toEpochDay()); //计算当前日期到1970-01-01的天数System.out.println(end.toEpochDay());System.out.println(end.toEpochDay()-today.toEpochDay());//不包含起始日期System.out.println(LocalDate.ofEpochDay(12));System.out.println(LocalDate.parse("2019-07-08"));}
}

11. 图G的顶点数n和边数e的关系__熟练掌握

1、若G是无向图,则边的范围0≤e≤n(n-1)/2。一个无向图包含 2020 条边,如果图中没有自环和重边,请问最少包含多少个结点?答案: 65(无向图最多有n(n-1)/2条边)。

12. 读取数据模板__熟练掌握

//输入
BufferedReader sc= new BufferedReader(new InputStreamReader(System.in));
String strs[] = sc.readLine().Split(" "); // 使用Split通过空格分割读入的一行字符串,存在s2中
for (int i = 0; i < n; i++){nums[i] = Integer.parseInt(strs[i]);
}//输出
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
out.write(c);
out.write("\n");
out.flush();

13.大数模板__熟练掌握

//2.使用构造函数初始化
BigInteger a = new BigInteger("123456789101112131415");
BigDecimal b = new BigDecimal("123456.123456");BigInteger.max(BigInteger)  最大值
BigInteger.min(BigInteger)  最小值
valueOf(); //将参数转换为指定的类型
add();//相加
subtract(); //相减
multiply(); //相乘
divide(); //相除取整
remainder(); //取余
pow(); //乘方,a.pow(b)=a^b
BigInteger(String, int index); //可以把一个index进制的字符串,转化为10进制的BigInteger;
BigInteger.compareTo(BigInteger);//比较大小 1 0 -1
BigInteger.mod(BigInteger); //取余
BigInteger.gcd(BigInteger); //最大公约数
c = a.modPow(b, mod); //(a^b)%mod
abs(); //绝对值
negate();// 取反数
equals(); //是否相等

14. 数字各个位的和__熟练掌握

 static int sum(int i) {int res=0;while(i>0) {int temp=i%10;res+=temp;i/=10;}return res;}

15. 子串的截取substring()_hashset去重__熟练掌握

 public static void main(String[] args) {String str="0100110001010001";int n=str.length();Set<String> set = new HashSet<String>();for (int i = 0; i <=n; i++) {  //每一种可能,加入set里面for (int j = i + 1; j <= n; j++) {String a = str.substring(i, j);   //截取字符串从i到jset.add(a);                       //返回}}

16. 字符串API模板使用__熟练掌握

1. String s = String.valueOf(i); //将int转为String2. charAt(int i);//返回索引i处的字符3. toCharArray();//返回此字符串的字符数组4. split(String regex); // 根据正则表达式拆分5. s.indexOf('2')!=-1 //判断字符串中是否存在该字符6. replaceAll(String s1,String s2);//用s2替换目标字符串中出现的所有s17. toUpperCase(); //将此字符串中的所有字母都换为大写8. toLowerCase()//将此字符串中的所有字母都换为小写9. indexOf(int ch);// 返回指定字符在此字符串中第一次出现的索引10. lastIndexOf(int ch);//返回指定字符在此字符串最后一次出现的索引

17. 判断闰年__熟练掌握

 //闰年2月29天  一年366 平年28 365//判断闰年的方法:能被4整除,但不能被100整除;或者能被400整除的年份是闰年。LocalDate today2 = LocalDate.of(2000, 12, 2);if(today2.isLeapYear()) //jdk1.8特性(y%4==0&&y%100!=0)||(y%400==0);//使用原始判断

18. 前缀和____掌握

public class _795_前缀和 {public static void main(String[] args) {/** 前缀和 Si为数组的前i项和* S[i]=a[1]+a[2]+a[3]+...a[i]*///求[l,r]中的和,就是S[r]-S[l-1]  l,r并不是下标 而是第几位Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] arr=new int[n+1];//s[i] 代表arr的前i项和int[] s=new int[n+1];for(int i=1;i<=n;i++) {arr[i]=sc.nextInt();s[i]=s[i-1]+arr[i];}while(m-->0) {int l = sc.nextInt();int r = sc.nextInt();System.out.println(s[r]-s[l-1]);}}
}

19. 二维数组前缀和____掌握

import java.util.*;public class _796_子矩阵的和_二维数组前缀和 {public static void main(String[] args) {/** 这题得自己画个图 好理解* 主要是左边的前缀和+上面的前缀和-两次重复的部分前缀和左上角* 二维数组前缀和 S[i,j]=S[i-1,j]+S[i,j-1]-S[i-1,j-1]+a[i,j]*/Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int q = sc.nextInt();int[][] arr=new int[n+1][m+1];for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {arr[i][j]=sc.nextInt();}}//二维数组前缀和 S[i,j]=S[i-1,j]+S[i,j-1]-S[i-1,j-1]+a[i,j]int[][] s=new int[n+1][m+1];for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+arr[i][j];}}//求(x1,y1) (x2,y2)子矩阵的和  画图 画图//就是S[x2,y2]-S[x2,y1-1]-S[x1-1,y2]+S[x1-1,y1-1]//坐标的输入并不是按下标来的 而是第几个while(q-->0) {int x1=sc.nextInt();int y1=sc.nextInt();int x2=sc.nextInt();int y2=sc.nextInt();int res=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];System.out.println(res);}}
}

20. 差分数组 ____掌握

import java.io.*;public class _797_差分 {//输入一个长度为 n的整数序列。
//接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。static int N=100010;static int[] b=new int[N];public static void main(String[] args) throws IOException {/** a[0],a[1]...a[n]是b[0],b[1]....b[n]的前缀和数组* 反过来说 b数组是a数组的差分数组* 构造差分数组b 很简单* b[1]=a[1]* b[2]=a[2]-a[1]* b[3]=a[3]-a[2]* .....* b[n]=a[n]-a[n-1]*/BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String[] s = bf.readLine().split(" ");int n = Integer.parseInt(s[0]);int m = Integer.parseInt(s[1]);int[] arr=new int[n+1];String[] sArr = bf.readLine().split(" ");for(int i=1;i<=n;i++) {arr[i]=Integer.parseInt(sArr[i-1]);}// 已知前缀和数组 求差分数组for(int i=1;i<=n;i++) {//相当于在i下标位置插入arr[i]这个数insert(i,i,arr[i]);}while(m-->0) {String[] split = bf.readLine().split(" ");int l = Integer.parseInt(split[0]);int r = Integer.parseInt(split[1]);int val = Integer.parseInt(split[2]);insert(l,r,val);}//求b数组的前缀和 就是a数组最终的结果for(int i=1;i<=n;i++) {arr[i]=arr[i-1]+b[i];System.out.print(arr[i]+" ");}bf.close();}/** 在 a数组的[l,r]区域+c* 相当于差分数组 b[l]+c,b[r+1]-c*/public static void insert(int l,int r,int val) {b[l]+=val;b[r+1]-=val;}
}

21.常用数据结构____掌握

 //集合数组List[] arr=new ArrayList[T+1]; //存储每一个时刻的店铺id订单//数组存储26个字母的个数char[] c=s.toCharArray();int cnt[]=new int[26];for (int i = 0; i <c.length; i++) {cnt[c[i]-'a']++;}

22. 浮点数二分_掌握

import java.util.Scanner;//3 4
//3 5 4
//2.50
public class Acwing_680_剪绳子 {static int n,m;static int N=100000;//存储每个绳子的长度static int nums[]=new int[N];public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();for(int i=0;i<n;i++) {nums[i]=sc.nextInt();}//0<Li<1e9 绳子最大长度也就是1e9double l=0,r=1e9;//浮点数二分法 //精度比求精度高两位while(r-l>1e-4) { double mid=l+(r-l)/2;if(check(mid)) {l=mid;}else {r=mid;}}System.out.printf("%.2f",l);}public static boolean check(double mid) {int s=0;for(int i=0;i<n;i++) {//使用二分出来的长度进行判断 可以剪得数量s+=nums[i]/mid;if(s>=m) {return true;}}return false;}
}

23. 数的三次方根二分_掌握

/*
1000.00
输出样例:
10.000000
*/
public class _790_数的三次方根_二分 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double n = sc.nextDouble();double l=-10000,r=10000;while(r-l>1e-8) { //精度比求精度高两位double mid=(l+r)/2;if(mid*mid*mid>=n) {r=mid;}else {l=mid;}}System.out.printf("%.6f",l);}
}

24. 分巧克力二分_掌握

import java.util.*;public class _1227_分巧克力_二分 {static int N=100000;static int[] h=new int[N];static int[] w=new int[N];static int n,k;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n=sc.nextInt();  //n块巧克力k=sc.nextInt();//初始化 高度和宽度for(int i=0;i<n;i++) {h[i]=sc.nextInt();w[i]=sc.nextInt();}//二分,注意r不能写成1e5,因为在java中1e5属于浮点数,就需要强制类型转化int l=1,r=100000;while(l<r) {int mid=l+r+1>>1;//若mid都符合 直接往右边走 数值更大if(check(mid)) {l=mid;}else {//否则mid不符合 走左边 数值更小r=mid-1;}//输出r和l都是一样的 最后l=r跳出循环}System.out.println(r);}//二分枚举全部可以的边public static boolean check(int mid) {int res=0;//枚举n块巧克力for(int i=0;i<n;i++) {// (h[i]/mid)*(w[i]/mid)  mid边长这个就是可以切的数量res+=(h[i]/mid)*(w[i]/mid); //res就是n块巧克力可以切的和 }//若大于res数量大于小朋友数量k 直接return truereturn res>=k;}
}

第十二届_国赛蓝桥杯个人模板_基础篇相关推荐

  1. “蓝桥杯”练习系统(基础篇)

    "蓝桥杯"练习系统(基础篇) 一.基础训练 数列排序 解法:排序算法-冒泡排序 关键字:数组 排序 函数封装: #include<bits/stdc++.h> usin ...

  2. 2019年国赛高教杯数学建模E题薄利多销分析解题全过程文档及程序

    2019年国赛高教杯数学建模 E题 薄利多销分析 原题再现   "薄利多销"是通过降低单位商品的利润来增加销售数量,从而使商家获得更多盈利的一种扩大销售的策略.对于需求富有弹性的商 ...

  3. 国赛高教杯使用python/matlab必会基础数学建模-数据处理模块(课程4)

    前言:我看有人的博客学习资料本就是基础知识然后还整个付费专栏博客,那我就直接打破这一垄断,直接上干货免费资料供大家学习. 国赛高教杯数据处理全过程总结 数据存在的问题   ⚫ 数据预处理是数据挖掘中的 ...

  4. 华创芯光朱斌斌博士晋级第二届“清华大学国强研究院杯”全球人工智能与机器人双创大赛

    12月17日,华创芯光创始人朱斌斌博士晋级第二届"清华大学国强研究院杯"全球人工智能与机器人双创大赛,粤港澳赛区在深圳举行. 第二届"清华大学国强研究院杯"全球 ...

  5. 2022国赛高教杯数学建模A题B题(预测)

    2022国赛高教杯A题:   如何正确看待外企商品   随着经济和科技的发展,科技与生活融为一体,越来越多的智能科技化商品涌现在国内市场,有些商品例如手机已经成为当代人出门必用的付款.出行证明的媒介, ...

  6. 2019年国赛高教杯数学建模C题机场的出租车问题解题全过程文档及程序

    2019年国赛高教杯数学建模 C题 机场的出租车问题 原题再现   大多数乘客下飞机后要去市区(或周边)的目的地,出租车是主要的交通工具之一.国内多数机场都是将送客(出发)与接客(到达)通道分开的.送 ...

  7. 2021年国赛高教杯数学建模A题FAST主动反射面的形状调节解题全过程文档及程序

    2021年国赛高教杯数学建模 A题 FAST主动反射面的形状调节 原题再现   中国天眼--500 米口径球面射电望远镜(Five-hundred-meter Aperture Spherical r ...

  8. 2018年国赛高教杯数学建模A题高温作业专用服装设计解题全过程文档及程序

    2018年国赛高教杯数学建模 A题 高温作业专用服装设计 原题再现   在高温环境下工作时,人们需要穿着专用服装以避免灼伤.专用服装通常由三层织物材料构成,记为I.II.III层,其中I层与外界环境接 ...

  9. 2021年国赛高教杯数学建模B题乙醇偶合制备C4烯烃解题全过程文档及程序

    2021年国赛高教杯数学建模 B题 乙醇偶合制备C4烯烃 原题再现   C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料.在制备过程中,催化剂组合(即:Co 负载量.Co/S ...

最新文章

  1. hdu 5055(贪心)
  2. Tensorflow中的Protocol Buffer
  3. kali linux下安装TOR
  4. 《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》
  5. jquery将表单序列化json对象
  6. 从大数据到深度学习,这些年度开源“新秀”你可用过?
  7. 12019.LMT84模拟温度传感器
  8. C++ 自己实现一个unordered_map(hashmap)
  9. SQL 删除数据-select在当前表字段作为条件
  10. Unity3D脚本语言的类型系统
  11. 安装linux系统 黑屏,Ubuntu 16.04安装时显示器黑屏处理
  12. Verilog基础知识4(常用集成门电路的逻辑符号对照表)
  13. hazelcast 搭建_hazelcast教程 入门
  14. python从零开始到精通_「Python 入门学习指南」0基础小白助你从入门到精通!
  15. 为什么mac会卡顿,mac电脑卡顿怎么解决
  16. 软考高级系统架构设计师系列论文七:论基于构件的软件开发
  17. Springboot实现图书馆座位预约管理系统之自习室预约占座系统源码
  18. 操作系统——操作系统发展历程及基本概念
  19. 【参赛作品61】openGauss/MogDB大对象LargeObject存取测试
  20. matlab做能谱图,求一个能谱分析的matlab程序

热门文章

  1. windows 批处理命令打开文件
  2. 学编程要先学习数学吗?
  3. ICRA2022 SLAM进展---激光SLAM
  4. 有哪款戴尔笔记本适合学计算机专业,学生用笔记本哪款好? 2018适合大学生用的笔记本...
  5. 投资4万元开一家定制个性手表工作室
  6. 基于C#的WEB服务器运行状态监测程序
  7. 微星gs63vr笔记本如何U盘装Win7?
  8. 2019年第十届蓝桥杯B组决赛
  9. IxEdit傻瓜式JavaScript开发工具 附下载 汉化版 视频教程
  10. can和could的用法_如何优雅的撩汉 三次约会套路男神