当前位置: 首页 > article >正文

蓝桥杯2024年真题java B组 【H.拼十字】

蓝桥杯2024年真题java B组 【H.拼十字】

原题链接:拼十字
思路:

使用树状数组或线段树解决。

先将输入的信息存入到一个n行3列的数组中,将信息排序,按照长度小到大,长相同时,宽度小到大
排序。
建立三个树状数组,维护三种颜色对应的信息,树状数组的索引就是数据的宽度,值就是有几个这样宽度的数据。
遍历数组每组数据:
当颜色为0时,假设该组数据为6 3 0,则要求的就是其他两个颜色中宽度比当前宽度大的(因为长度已经从小到大排过序),也就是去1,2树状数组中找宽度比当前3的宽度大的,就是下标大于3的(就是宽度大于三的),就是1,2树状数组中的4到无穷大(就是到N)的和。
将该组数据加到对应的树状数组0中去,就是tree0.add(arr[i][1],1)

其他两种情况同理。
该过程中的树状数组中的很多空间是无效的,但还是通过了。

code:

import java.io.*;
import java.util.Arrays;
public class Main {static int N = 100005;static int MOD = 1000000007;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer in = new StreamTokenizer(br);PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();int n = (int) in.nval;//数据信息,一行存储一个数据项int[][] arr = new int[n + 1][3];Tree tree0 = new Tree(N);Tree tree1 = new Tree(N);Tree tree2 = new Tree(N);for (int i = 1; i <= n; i++) {in.nextToken();arr[i][0] = (int) in.nval;in.nextToken();arr[i][1] = (int) in.nval;in.nextToken();arr[i][2] = (int) in.nval;}long res = 0;//排序,先按照长度升序排序,在按照宽度进行升序排序Arrays.sort(arr, (a, b) -> {if (a[0] != b[0]) {return Integer.compare(a[0], b[0]); // 按 arr[i][0] 升序}return Integer.compare(a[1], b[1]); // 如果 arr[i][0] 相同,按 arr[i][1] 升序});for (int i = 1; i <= n; i++) {//将当前的节点加入线段树中//先求和res %= MOD;if (arr[i][2] == 0){res += tree1.sum(arr[i][1]);res += tree2.sum(arr[i][1]);tree0.add(arr[i][1],1);} else if (arr[i][2] == 1) {res += tree0.sum(arr[i][1]);res += tree2.sum(arr[i][1]);tree1.add(arr[i][1],1);}else{res += tree0.sum(arr[i][1]);res += tree1.sum(arr[i][1]);tree2.add(arr[i][1],1);}}out.print(res);out.flush();out.close();br.close();}
}
class Tree{long[] tree;int N;public Tree(int N){this.N = N;tree = new long[N + 1];}//获取最右边的1public long lowBit(int i) {return i & -i;}public void add(int i,long  val) {while (i <= N) {tree[i] += val;i += lowBit(i);}}//计算的是原数组中的 1-i 对应的和public long query(int i) {long res = 0;while (i > 0) {res += tree[i];i -= lowBit(i);}return res;}public long sum(int i){return query(N) - query(i);}
}

相关文章:

蓝桥杯2024年真题java B组 【H.拼十字】

蓝桥杯2024年真题java B组 【H.拼十字】 原题链接&#xff1a;拼十字 思路&#xff1a; 使用树状数组或线段树解决。 先将输入的信息存入到一个n行3列的数组中&#xff0c;将信息排序&#xff0c;按照长度小到大&#xff0c;长相同时&#xff0c;宽度小到大 排序。 建立三个…...

skia的学习与研究

最近再研究skia,特地发一篇文章来记录一下。Skia版本更新非常频繁&#xff0c;大概每四周就会创建一个新版本&#xff0c;此版本持续维护六周左右就会被标记为稳定分支&#xff1b; skia三套渲染&#xff1a; 无gpu硬件如嵌入式设备&#xff0c;使用CPU渲染&#xff0c;使用…...

T-SQL 语言基础: SQL 数据库对象元数据及配置信息获取

目录 介绍目录视图 获取表和架构名称获取列信息 信息架构视图 获取表信息获取列信息 系统存储过程和函数 获取对象列表获取对象详细信息获取约束信息获取数据库属性信息 总结引用 介绍 在 SQL 数据库管理中&#xff0c;获取数据库对象的元数据信息是至关重要的。元数据提供了…...

网络编程 day01

网络编程 day01 0. 网络编程课程介绍1. 认识网络1.网络发展史2.局域网与广域网局域网&#xff08;LAN&#xff09;广域网&#xff08;Wan&#xff09; 3.光猫4.路由器5.交换机与路由器6.网线 2. IP1. 基本概念2. 网络号/主机号&#xff08;二级划分&#xff09;3. IP地址分类整…...

Tomcat 8 安装包下载

Tomcat 8 安装包下载 【下载地址】Tomcat8安装包下载 本仓库提供了一个包含 Windows 和 Linux 版本的 Tomcat 8 安装包&#xff0c;方便用户快速下载并部署 Tomcat 8 服务器 [这里是图片001] 项目地址: https://gitcode.com/open-source-toolkit/fda7c 简介 本仓库提供了一个…...

java 与 c++在遍历 map 数据结构上的一些差异

在编写动态规划时&#xff0c;发现了一个现象&#xff1a; C 中的 unordered_map 和 map 可以一边遍历一边添加数据Java 中的 HashMap 却不能&#xff0c;Java 只能通过 ConcurrentSkipListMap 实现在遍历中添加数据。 问了 grok&#xff0c;原来是两个编程语言在 map 数据结…...

vscode通过ssh远程连接(linux系统)不能跳转问题

1.问题描述 unbantu中的vscode能够通过函数跳转到函数定义&#xff0c;而windows通过ssh连接unbantu的vscode却无法跳转 2.原因&#xff1a; 主要原因是这里缺少插件&#xff0c;这里是unbantu给主机的服务器&#xff0c;与ubantu本地vscode插件相互独立&#xff0c;能否跳转…...

unity pico开发 五 UI交互

文章目录 添加画布添加交互组件取消传送射线对UI的控制解决按扳机键会传送的冲突按下按键呼出菜单&#xff0c;并让菜单出现在头的前方 添加画布 创建一个新画布&#xff0c;添加一个Button&#xff0c;将画布改为world space&#xff0c;然后缩放改为0.001&#xff0c;调整到…...

软开经验总结

文章目录 软开经验总结一、二次开发时候操作步骤二、logger的作用&#xff01;&#xff01;&#xff01;三、git使用 软开经验总结 一、二次开发时候操作步骤 改 SDK 和 language level改 maven 配置改数据库 注意Mysql 版本 差别是否过大&#xff01;&#xff01;&#xff0…...

攻克 FBX 转 STL 难题,迪威模型网搭建通途

在 3D 内容创作与 3D 打印的广袤天地中&#xff0c;不同的文件格式宛如一道道独特的密码&#xff0c;各自守护着特定的 3D 世界。今天&#xff0c;我们聚焦于 FBX 与 STL 这两种格式&#xff0c;以及如何借助迪威模型网实现 FBX 到 STL 的无缝转换。​ FBX 与 STL&#xff1a;…...

QT 中的元对象系统(三):QObject深入理解

目录 1.简介 2.特性 2.1.对象树与内存管理 2.2.信号与槽机制 2.3.事件处理 2.4.属性系统 2.4.1.Q_PROPERTY配置的属性 2.4.2.动态属性 2.4.3.实现原理 2.5.国际化支持 2.6. 定时器支持 3.类设计(q和d指针) 4.总结 1.简介 QObject这个 class 是 QT 对象模型的核心&…...

二、QT和驱动模块实现智能家居-----问题汇总1

1、文件地址改变后必须在QT下更改地址 2、指定了QT内Kits下的Sysroot头文件地址&#xff0c;但是还是找不到头文件&#xff1a; 3、提示无法执行QT程序&#xff1a;先干掉之前的QT程序 ps //查看程序PIDkill -9 PID 4、无法执行QT程序 1&#xff09;未设置环境变量 …...

Golang的数据库分库分表

# Golang的数据库分库分表 什么是数据库分库分表 数据库分库分表是指将单一的数据库拆分成多个库&#xff0c;每个库中包含多张表&#xff0c;以提高数据库的性能和可伸缩性。通常在大型应用中&#xff0c;单一的数据库往往无法满足高并发和海量数据的需求&#xff0c;因此需要…...

Docker + Vue2 热重载:为什么需要 CHOKIDAR_USEPOLLING=true?

在 Docker 中运行 Vue 2 项目时&#xff0c;许多开发者会遇到 代码修改后热重载&#xff08;Hot Reload&#xff09;失效的问题。虽然 Vue 2 默认支持热重载&#xff0c;但由于 Docker 文件监听机制的特殊性&#xff0c;Webpack 的 watch 机制可能无法正常工作。 本文将深入解析…...

NModbus 连接到Modbus服务器(Modbus TCP)

1、在项目中通过NuGet添加NModbus&#xff0c;在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…...

基于vue3和flask开发的前后端管理系统(一):项目启动准备

准备工作 我们需要准备以下工具 vue3&#xff1a;构建前端 tailwind css&#xff1a;样式库vite&#xff1a;快速构建vue项目pinia &#xff1a;vue3 的事件管理器 flask&#xff1a;后端代码Mysql&#xff1a;数据库 heidisql&#xff1a;数据库图形化界面 vscode&#xff1…...

单例模式(线程案例)

单例模式可以分为两种&#xff1a;1.饿汉模式 2.懒汉模式 一.饿汉模式 //饿汉模式&#x1f447; class MySingleTon{//因为这是一个静态成员变量&#xff0c;在类加载的时候&#xff0c;就创建了private static MySingleTon mySingleTon new MySingleTon();//创建一个静…...

通过多线程分别获取高分辨率和低分辨率的H264码流

目录 一.RV1126 VI采集摄像头数据并同时获取高分辨率码流和低分辨率码流流程 ​编辑 1.1初始化VI模块&#xff1a; 1.2初始化RGA模块&#xff1a; 1.3初始化高分辨率VENC编码器、 低分辨率VENC编码器&#xff1a; 1.4 VI绑定高分辨率VENC编码器&#xff0c;VI绑定RGA模块…...

智慧农业中光谱相机对土壤成分的无损检测应用‌

可浏览之前发布的一篇文章&#xff1a;光谱相机在农业中的具体应用案例 一、土壤成分定量分析 ‌养分检测‌ 光谱相机通过捕捉土壤反射的特定波长光线&#xff0c;可精准检测氮、磷、钾等主要养分含量&#xff0c;以及有机质和水分比例。例如&#xff0c;不同养分对近红外波段…...

Muduo + OpenSSL 网络交互完整流程

&#x1f525; Muduo OpenSSL 网络交互完整流程 这套架构结合了 Muduo&#xff08;网络库&#xff09; OpenSSL&#xff08;TLS/SSL 加密&#xff09; BIO&#xff08;缓存&#xff09;&#xff0c;整个数据流动过程如下&#xff1a; &#x1f30d; 1. 网络通信的基本流程 M…...

2025年能源工作指导意见重点内容

一、总体目标 能源供应保障 全国发电总装机容量达到36亿千瓦以上&#xff0c;新增新能源发电装机2亿千瓦以上&#xff0c;发电量目标10.6万亿千瓦时&#xff0c;跨省跨区输电能力持续提升。 煤炭稳产增产&#xff0c;原油产量保持2亿吨以上&#xff0c;天然气产量较快增长&am…...

DNS 详细过程 与 ICMP

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; DNS (Domain Name System) 快速了解&#x1f98b; DNS 背景&#x1f98b; 域名简介&#x1f98b; 真实地址查询 —— DNS&#x1f380; 域名的层级关系&am…...

学到什么记什么(25.3.3)

Upload-labs 今日重新做了一下文件上传漏洞&#xff0c;这里第一题之前采用直接抓包改后缀名.jpg为.php&#xff0c;再写入一句话<?php phpinfo();?>然后放行&#xff0c;得到图片地址&#xff08;可复制&#xff09;&#xff0c;本来直接访问图片地址即可得到敏感信息…...

阿里云服务器部署项目笔记 实操 centos7.9

阿里云服务器部署项目笔记 实操 centos7.9 springboot vue elementUImysqlredis 相关的redis,mysql,nginx镜像,jdk 通过网盘分享的文件&#xff1a;docker镜像 链接: https://pan.baidu.com/s/15VwcWBP4Jy07xADuvylgQw?pwdm2g9 提取码: m2g9 配置环境 连接云服务器 安装…...

完全背包变体-排列和组合的循环顺序问题

排列&#xff0c;区分顺序&#xff1a;内层循环物品{1,2}&#xff0c;可以让3-2->1-1和3-1->2-2都计算一遍。 组合不区分顺序&#xff1a;外层循环物品{1,2}&#xff0c;只会按照物品顺序填充 总结&#xff1a;排列问题中&#xff0c;每个容量的状态更新时&#xff0c;允…...

华为飞腾D2000芯片(基于ARM架构)的欧拉操作系统(openEuler)上部署MySQL

一、环境准备 确认系统架构 uname -m # 应输出 aarch64&#xff08;即ARM64&#xff09;更新系统 sudo dnf update -y安装基础依赖 sudo dnf install -y libaio numactl openssl-devel tar wget二、安装MySQL 方案1&#xff1a;通过openEuler官方仓库安装&#xff08;推荐&am…...

C#开发——日期操作类DateTime

在C#中&#xff0c;日期和时间的操作主要通过 System.DateTime 类来实现。 DateTime 提供了丰富的属性和法&#xff0c;用于处理日期和时间的创建、格式化、比较和计算等操作。以下是一些常用的日期函数和特性&#xff1a; 一、创建日期和时间 1、直接指定日期和时间&…...

win32汇编环境,窗口程序中使控件子类化的示例一

;运行效果 ;win32汇编环境,窗口程序中使编辑框控件子类化的示例一 ;窗口子类化&#xff0c;就是把某种控件&#xff0c;自已再打造一遍&#xff0c;加入自已的功能。比如弄个特殊形状的按钮&#xff0c;或只能输入特殊字符的编辑框 ;当然&#xff0c;一般来说&#xff0c;这都是…...

多镜头视频生成、机器人抓取、扩散模型个性化 | Big Model weekly第58期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介绍了一种名为GLM-4-Voice的智能且类人化的端到端语音聊天机器人。它支持中文和英文&#xff0c;能够进行实时语音对话&a…...

iOS实现一个强大的本地状态记录容器

我们开发中经常会遇到这样的场景&#xff0c;就是我们客户端用户进行了某个操作&#xff0c;这个操作影响了数据的状态&#xff0c;但是我们又不方便重新请求一次数据&#xff0c; 这个时候&#xff0c;就需要我们记录一下本地状态在内存中&#xff0c;随着业务越来越复杂&…...