第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串

请添加图片描述

占位

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot+Vue的Java项目-房产销售系统(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

FlexLua低代码便捷打造4G转RS485网关设备

在物联网时代&#xff0c;各种设备之间的互联互通变得越来越重要&#xff0c;而4G转RS485网关设备的出现为不同设备之间的通信提供了更便捷的方式&#xff0c;推动了物联网技术的发展。 4G转RS485网关的通信原理相对简单易懂。它通过4G网络接收数据&#xff0c;然后将数据转换成…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 一、简单介绍 二、简单去除图片水印效果实现原理 三、简单去除图片水印效果案例…

Java入门基础知识第八课(数组)——冒泡排序、Arrays工具类

前面二白讲了关于数组的概念、语法以及简单的输入输出&#xff0c;实际上关于数组的知识还有很多&#xff0c;接下来咱们讲一下冒泡排序以及一些常用的Arrays工具类&#xff0c;需要记忆的知识很多&#xff0c;而且容易混淆。 一、冒泡排序 简介&#xff08;原理&#xff09;…

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“银行OA系统的设计与实现”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 用户登录界面 管理员主界面 员工基本档…

知道做到 一篇总结学习方法的笔记

元数据 [!abstract] 知道做到&#xff1a;跃迁式学习 书名&#xff1a; 知道做到&#xff1a;跃迁式学习作者&#xff1a; 彼得•霍林斯简介&#xff1a; 学习是改善你的生活环境、成为你想成为的人的关键。科学的方法能加速学习进程&#xff0c;让你事半功倍。技能、信息和能力…

openkylin系统通过网线连接ubuntukylin系统上网攻略

openkylin系统通过网线连接ubuntukylin系统上网攻略 主机1&#xff1a;x64 amd &#xff0c;系统&#xff1a;ubuntukylin 22.04 &#xff0c;状态&#xff1a;通过wifi连接热点进行上网&#xff0c;并共享网络。 主机2&#xff1a;x64 intel &#xff0c;系统&#xff1a;ope…

5.x 版本 CallKit SDK 无法弹起通话界面

5.x 版本 CallKit SDK 作为接听方在前台的情况下无法弹起通话界面&#xff0c;作为拨打方能正常弹起通话界面 分析&#xff08;根因分析、需求分析&#xff09; CallKit SDK 初始化依赖于 IMKit SDK 初始化&#xff0c;如果您使用 IMLib SDK 的方法初始化的话&#xff0c;会导…

告别百年激进笔记

系列文章目录 八次危机笔记 告别百年激进笔记 文章目录 系列文章目录前言导图第一部分 资本全球化的宏大叙事第一节 人类创造的两个异化物第二节 全球资本化与制度性致贫第三节 国家竞争的“微笑曲线”第四节 欧债危机实属政治危机第五节 日本研究中的另类思考第六节 从…

流程图的新语法-mermaid的快速使用--推荐

chatgpt或者现在的大数据采用的流程图给出的代码如下&#xff1a; graph TD;A[接收客户请求] --> B[问题分类];B --> C[技术支持];B --> D[维修服务];C --> E[远程解决];C --> F[现场支持];D --> G[维修完成];G --> H[服务反馈];style A fill:#f9f,strok…

【数据结构与算法】贪心算法及例题

目录 贪心算法例题一&#xff1a;找零问题例题二&#xff1a;走廊搬运物品最优方案问题输入样例例题三&#xff1a;贪心自助餐 贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优的选择&#xff0c;以期望最终达到全局最优解的算法。它的核心思想是每次都选择当前最…

即插即用模块详解SCConv:用于特征冗余的空间和通道重构卷积

目录 一、摘要 二、创新点说明 2.1 Methodology 2.2SRU for Spatial Redundancy​编辑 2.3CRU for Channel Redundancy 三、实验 3.1基于CIFAR的图像分类 3.2基于ImageNet的图像分类 3.3对象检测 四、代码详解 五、总结 论文&#xff1a;https://openaccess.thecvf.c…

kafka的概念以及Zookeeper集群 + Kafka集群 +elfk集群

目录 zookeeper同步过程 分布式通知和协调 zookeeper同步过程 分布式通知和协调 准备 3 台服务器做 Zookeeper 集群 192.168.68.5 192.168.68.6 192.168.68.7 安装前准备 //关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 node1服务器&a…

Linux进阶篇:性能监控工具:socket 统计信息

Linux性能监控工具&#xff1a;socket 统计信息 1 ss命令介绍 ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息&#xff0c;它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息&#xff0c;而且比 netsta…

ssm052游戏攻略网站的设计与实现+vue

游戏攻略网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本游戏攻略网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

使用avx2 指令集加速向量算法运算

使用cpu-z 查看cpu指令集 2 向量加&#xff0c;乘法&#xff0c;除法 我们使用向量加&#xff0c;为什么函数是0 到 8 的计算&#xff0c;因为avx2 寄存器为256位&#xff0c;同时设置启动增强指令集 #include <immintrin.h> // 引入包含AVX2指令集的头文件void vecto…

2024认证杯数学建模A题保暖纤维保暖能力原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了认证杯数学中国数学建模网络挑战赛第一阶段A题目保暖纤维的保暖能力完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品…

【Conda基础命令】使用conda创建、查看、删除虚拟环境及可能的报错处理

文章目录 前言&#xff08;1&#xff09; 在默认路径下创建一个新的虚拟环境&#xff08;2&#xff09; 查看已有的虚拟环境&#xff08;3&#xff09; 删除已有的虚拟环境&#xff08;谨慎操作&#xff09;&#xff08;4&#xff09;激活虚拟环境&#xff08;5&#xff09;退出…

社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;服务种类管理 &#xff08;3&#xff09;社区服务管理 &#xff08…

STM32F103ZE-中断

文章目录 122.12.22.32.42.52.62.6.12.6.2 33.13.23.34.14.3 56788.18.2 NVIC 管理所有中断EXTI 外部中断事件控制器 针对外部 可以看成NVIC 下属 1 中断和 中止&#xff08;不回去了&#xff09;不一样 搁一段时间就如果不用中断 用while&#xff08;&#xff09; 可能夹半天…