第14届java A组蓝桥杯做题记录

A题 特殊日期

请添加图片描述

package Java14省赛.Java研究生组;import java.time.Year;
//特殊判断一下2月份,leaf 为true + 1
import java.util.*;import 蓝桥杯.dfs_n皇后;
public class 特殊日期 {static int sum(int d){int res = 0;while(d > 0){res += d % 10;d /= 10;}return res;}static boolean check(int y,int m,int d){return sum(y) == (sum(m) + sum(d));}public static void main(String[] args){int []month = {0,31,28,31,30,31,30,31,31,30,31,30,31};int ans = 0;for(int year = 1900;year < 10000;year++){boolean leaf = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));for(int m = 1;m <= 12;m ++){for(int d = 1;d <= month[m];d ++)if(check(year, m, d)) ans++;if(leaf && m == 2 && check(year, m, 29)) ans++;}}System.out.print(ans);	}
}

B题 与或异或

请添加图片描述


import java.util.*;
// 可以枚举op的序列,检验是否ans[4][0] == 1
//op的枚举树是个满三叉树
public class Main {static int cnt = 0;public static void main(String[] args){int[][] arr = new int[5][5];arr[0][0] = 1;arr[0][1] = 0;arr[0][2] = 1;arr[0][3] = 0;arr[0][4] = 1;dfs(arr,1,0);System.out.print(cnt);}static void dfs(int[][] arr,int i,int j){if(i == 5) {if(arr[4][0] == 1)cnt++; return;}for(int k = 0;k < 3;k++) {if(k == 0) arr[i][j] = arr[i - 1][j] & arr[i - 1][j + 1];else if(k == 1) arr[i][j] = arr[i - 1][j] | arr[i - 1][j + 1];else arr[i][j] = arr[i - 1][j] ^ arr[i - 1][j + 1];if(i + j == 4) dfs(arr, i + 1, 0);else dfs(arr, i, j + 1);}}
}

C题平均

请添加图片描述

import java.util.*;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n=scanner.nextInt();int c=n/10;long sum=0;PriorityQueue<Integer>[] pqs=new PriorityQueue[10];for (int i = 0; i < 10; i++) {pqs[i]=new PriorityQueue<Integer>(); }for (int i = 0; i < n; i++) {int a=scanner.nextInt();int b=scanner.nextInt();pqs[a].add(b);}for (int i = 0; i < 10; i++) {while (pqs[i].size()>c) {sum+=pqs[i].poll();}}System.out.print(sum);}    
}

D题 棋盘

请添加图片描述

package Java14省赛.Java研究生组;import java.util.Scanner;// d[i][j] 代表着以(i,j)为顶点的数所有+1,
// 二维差分与二维前缀和相对应 
public class 棋盘 {static int N = 2010;static int[][] d = new int[N][N];public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(),m = scanner.nextInt();for(int i = 0;i < m;i++){int x1 = scanner.nextInt(),y1 = scanner.nextInt();int x2 = scanner.nextInt(),y2 = scanner.nextInt();d[x1][y1] ++;d[x2 + 1][y2 + 1]++;d[x1][y2 + 1]--; d[x2 + 1][y1]--;}for(int i = 1;i <= n;i++)for(int j = 1;j <= n;j++)d[i][j] += (d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1]);for(int i = 1;i <= n;i++) {for(int j = 1;j <= n;j++)if(d[i][j] % 2 == 1) System.out.print(1);else System.out.print(0);System.out.println();}}
}

E 互质的个数

请添加图片描述

package Java14省赛.Java研究生组;
import java.util.*;
//phi(x) = x *.... *(i - 1)/ i;i 为质因数
//a^b的质因数与a的质因数相同
//试除法求a的质因数 x *.... *(i - 1)/ i
public class 互质的个数 {static int mod = 998244353;static long qmi(long a,long k){long res = 1;while(k > 0){if(k % 2 == 1) res = res * a % mod;a = a * a % mod;k >>= 1;}return res % mod;}public static void main(String[] args){Scanner scanner = new Scanner(System.in);long a = scanner.nextLong(),b = scanner.nextLong();long k = qmi(a, b - 1) % mod, ans = a;for(int i = 2;i <= a / i;i++){if(a % i == 0){while(a % i == 0) a /= i;ans = ans /i *(i - 1);}}if(a > 1) ans = ans / a *( a- 1);System.out.print(ans * k % mod);}
}

F阶乘的和

package Java14省赛.Java研究生组;//m如果有 n个且n % (m + 1) == 0,则最大因子至少因子是m + 1的阶乘
//如果有m如果有 n个但n % (m + 1) != 0,则最大因子是m import java.util.Scanner;public class  阶乘的和{public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();long[] arr = new long[n];long min = Integer.MAX_VALUE;long countMin = 0;for(int i = 0; i < arr.length; i++){arr[i] = scan.nextLong();min = Math.min(min, arr[i]);}while(true){countMin = countMin / min;for(int i = 0; i < arr.length; i++){if(arr[i] == min) countMin++;}if(countMin % (min + 1) == 0 && min != 0){min++;}else{break;}}scan.close();System.out.println(min);}
}
![请添加图片描述](https://img-blog.csdnimg.cn/direct/244cd2f88265415a84bd45588faf9022.png)

G题小蓝的旅行

请添加图片描述
a little 难写,先更思路

// 1.如果没有油箱限制,我们只需贪心从第i个加油站到第i+ 1个加油站
// 可以从前i个加油站中选择花费最小的即可,如果花费最小的加油站累计加油超过限制删除即可
// 2.有油箱限制的情况下,我们只需加上从j到i最大剩余量 + 加油量不能超过超过油箱
// 而在j加的油在j+1这些加油站的油箱都会整体上在j加油站上加油
// 我们树状数组维护的每个加油站的剩余油量,如果我从i到不了i + 1,我从中选择一个花费最少的j,
// 加油,加油有限制,不能超过加油站剩余的量和容量- Max[j , i]   ,
// 加完油,加油站的油量更新达到各个加油站的油量更新

H 太阳

请添加图片描述

package Java14省赛.Java研究生组;
import java.util.*;
// 由于太阳的高度大于线段计算出线段两端点在x坐标上的投影坐标
// 按照y的坐标降序Line查看是否区间覆盖
// 如何计算在x坐标上的投影? x1 - y1 * (x1 - x2) /(y1 - y2);
// 如何查看区间是否被覆盖呢?可以用Treemap表示,key 表示左边界,value表示右边界
// Treemap是底层红黑树,是有序的,可以轻易的找到比他只小一点的左边界,然后比较即可public class 太阳 {static TreeMap<Double, Double> map = new TreeMap<Double, Double>();static double shadow(double x1,double y1,double x2,double y2){return x1 - y1 * (x1 - x2) /(y1 - y2);}private static void addRange(double l,double r)//合并区间{var L = map.floorEntry(l);var R = map.floorEntry(r);if(L != null && l < L.getValue()) l = L.getKey();if(R != null && r < R.getValue()) r = R.getValue();map.subMap(l, r).clear();map.put(l, r);}public static boolean queryRange(double left, double right) {var l = map.floorEntry(left);return l != null && l.getValue() >= right;}public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(),x = scanner.nextInt(),y = scanner.nextInt();List<Line> lines= new ArrayList<Line>();for(int i = 0;i < n;i++){int xi = scanner.nextInt(),yi = scanner.nextInt(),l = scanner.nextInt();lines.add(new Line(xi, yi, l));}lines.sort((l1,l2) -> Integer.compare(l2.y, l1.y));int res = 0;for(Line line:lines) {double l = shadow(line.lx,line.y, x, y);double r = shadow(line.rx,line.y, x, y);if(!queryRange(l, r)) res++;addRange(l, r);}System.out.println(res);}private static class Line {int lx, y, rx, length;public Line(int x, int y, int length) {this.length = length;lx = x;this.y = y;rx = x + length;}}
}

I高塔

请添加图片描述

package Java14省赛.Java研究生组;
// 如何处理组合数,这很重要
//C(n + m)(2 * n) * A[j](j =1 ~n) + [C(i + m)(2 * i) - C(i + m - 1)(2 * i) ]*=A[j]    (j =1 ~n)(i = 1 ~ n- 1)
// 上面的分析需用到生成函数,参考文章 https://blog.csdn.net/qq_44729222/article/details/130176129
//lucas定理,当a,b较大时,而p较小时
//C[a][b] = C[a / p][b / p] * C[a % p][b % p]
import java.util.*;public class 高塔
{static int N = 200100,mod = 998244353;static long[] A = new long[N];private static long lucas(long a, long b, int p) {if(a<p&&b<p) return C(a,b,p);return C(a%p,b%p,p)*lucas(a/p,b/p,p)%p;}private static long C(long a, long b,int p) {if(b>a) return 0;long res = 1,i,j;for(i = 1,j = a; i <= b; i ++, j--) {res = res*j%p;res = res*qmi(i,p-2,p)%p;}return res % mod;}private static long qmi(long a, int k, int m) {long res = 1;while(k!=0) {if((k&1)==1)res = res * a % m;a = a*a %m;k>>=1;}return res % mod;}public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(), m = scanner.nextInt();A[0] = 1;long ans = 0;for(int i = 1;i <= n;i++) A[i] = A[i - 1] * scanner.nextLong() % mod;	//System.out.print(lucas(24, 18, mod));long tmp = m % mod;long qq = tmp * tmp % mod;for(int i = 1;i < n;i++){ans = (ans + A[i] * tmp) %mod;tmp = (tmp * ((qq + mod * 500 - i * i)%mod)%mod) * (qmi((long)(4 * i * i + 2 * i), mod - 2, mod)) % mod;}ans = ans + A[n] * lucas(m + n, 2 * n, mod) % mod;System.out.print(ans);}
}

试题J:反串或01串

请添加图片描述

占位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java GC了解

Jstack找到线程的快照 jvm提供其他命令作用 jps&#xff1a; 虚拟机进程状况工具&#xff0c;类似linux的ps命令 jstat&#xff1a;虚拟机统计信息监视工具&#xff0c;经常看gc情况的会使用到 jinfo: java配置信息工具 jmap&#xff1a; java内存映射工具&#xff0c;dump&am…

微服务篇面试题

1、SpringCloud的组件有哪些&#xff1f; 2、负载均衡如何实现&#xff1f; 3、什么是服务雪崩&#xff1f;怎么解决&#xff1f; 4、项目中有没有做过限流&#xff1f; Tomcat单体可以&#xff0c;分布式不适合 5、解释一下CAP和BASE P&#xff1a;加入node03这边的网络断了&a…

基于PCIe的智能处理系统研究

引言 人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多源传感器捕获的海量信息进行快速处理,仅将处…

【8086汇编】汇编语言基础入门

文章目录 一、汇编简介1. 汇编语言的组成2. CPU、寄存器、内存3. CPU对存储器的读写4. 拓展5. 检测6. 解析 二、寄存器1. mov、add命令2. 物理地址3. CS:IP 装段地址和偏移地址3.1 如何改变CS:IP的值 4. 数据段DS:[address]4.1 前置知识&#xff1a;字与字节4.2 DS:[address] 5…

整数在内存中的存储和内存操作函数

目录 整数在内存中的存储1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端?2.2 为什么有大小端 3. 练习3.1 请简述大端字节序和小端字节序的概念&#xff0c;设计⼀个小程序来判断当前机器的字节序。&#xff08;10分&#xff09;-百度笔试题3.2 练习23.3 练…

java:特殊文件(properties,xml)和日志

特殊文件 txt(文本文件) txt文件是一种纯文本文件,用于存储文本信息 优缺点:txt文件简单易用,可以使用任何文本编辑器打开和编辑,但不支持数据类型和结构,所有信息均用纯文本形式保存 适合简单的配置信息存储 properties文件 properties文件是一种键值对文件,用于存储配置…

从零自制docker-10-【cgroup进行容器资源限制】

文章目录 目的导入包的相关公开原则当前进程的挂载信息deferfor scanner.Scan()判断字符串包含新建的cgroup的默认文件cpu相关配置对应到ubuntu 22.04版本的cpu相关配置top注意查看你可使用的cpu注意坑启动后的top查看显示进程使用的cpu序号代码结果 目的 启动容器时通过-mem、…

JAVA集合(学习)

1.Java集合框架体系图 集合框架Collection单列集合List 有序&#xff0c;可重复Vector 数组结构&#xff0c;线程安全ArrayList 数组结构&#xff0c;非线程安全LinkedList 链表结构&#xff0c;非线程安全Set 无序&#xff0c;唯一HashSet 哈希表结构LinkedHashSet 哈希表…

jvisualVM分析jvm内存使用快照dump

服务发生内存溢出&#xff0c;就需要查看服务器上Java服务的jvm堆内存使用情况&#xff0c;可以使用dump命令生成dump文件&#xff0c;然后下载到本地&#xff0c;然后使用jvisualVM工具打开&#xff0c;即可实现可视化分析。 生成dump文件常用的两种方式&#xff1a; 第一种…

[react] useState的一些小细节

1.无限循环 因为setState修改是异步的,加上会触发函数重新渲染, 如果代码长这样 一秒再修改,然后重新触发setTImeout, 然后再触发,重复触发循环 如果这样呢 还是会,因为你执行又会重新渲染 2.异步修改数据 为什么修改多次还是跟不上呢? 函数传参解决 因为是异步修改 ,所以…

Nacos 入门篇---服务端如何处理客户端的服务注册请求?(三)

一、引言 ok呀&#xff0c;上个章节我们讲了Nacos客户端的服务自动注册&#xff0c;今天我们来看看服务端接收到了客户端的服务注册请求&#xff0c;服务端都做了哪些事情&#xff5e; 二、目录 目录 一、引言 二、目录 三、回顾上节内容&#xff1a; 四、Nacos 服务代码入…

Springboot整合nacos报错无法连接nacos

报错信息&#xff1a;Nacos com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 关于这个报错的原因有很多&#xff1a;如Nacos未启动、网络问题、配置问题、版本不兼容问题等&#xff0c;我的报错原因主要是版本不兼容。 下面…

5.9 mybatis之callSettersOnNulls作用

文章目录 1. 当callSettersOnNullstrue时2. 当callSettersOnNullsfalse时 在mybatis的settings配置参数中有个callSettersOnNulls参数&#xff0c;官方解释为&#xff1a;指定当结果集中值为 null 的时候是否调用映射对象的 setter&#xff08;map 对象时为 put&#xff09;方法…

PostgreSQL入门到实战-第三十弹

PostgreSQL入门到实战 PostgreSQL教程网站官网地址PostgreSQL概述更新计划 PostgreSQL教程网站 https://www.postgresqltutorial.com/ 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreS…

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…

neo4j使用详解(结尾、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

Vector - CAPL - XCP介绍_02

前面我们介绍了关于使用vector XCP License后&#xff0c;通过CAPL对XCP协议进行连接、断开和获取当前XCP连接状态的函数&#xff0c;本篇文章不做过多的其他赘述&#xff0c;我们继续介绍CAPL控制XCP相关的其他函数。 目录 xcpActivate 代码示例 xcpDeactivate xcpActiva…

LeetCode617:合并二叉树

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

8:系统开发基础--8.1:软件工程概述、8.2:软件开发方法 、8.3:软件开发模型、8.4:系统分析

转上一节&#xff1a; http://t.csdnimg.cn/G7lfmhttp://t.csdnimg.cn/G7lfm 课程内容提要&#xff1a; 8&#xff1a;知识点考点详解 8.1&#xff1a;软件工程概述 1.软件的生存周期 2.软件过程改进—CMM Capability Maturity Model能力成熟度模型 3.软件过程改进—CMMI—…

vmware安装win10及ubuntu

安装win10 新建一个文件夹 选择刚才创建的文件夹 选择需要保存文件的位置&#xff0c;还是选择刚才创建的文件夹 选择自定义硬件 选择下载的win10镜像iso文件,导入后&#xff0c;点击完成即可 接下来就是下一步 没有此电脑&#xff0c;可以点击个性化-》主题-》桌面设置…