Acwing 138 周赛 解题报告 | 珂学家 | 偏序 + DP构造


前言

在这里插入图片描述


整体评价

很久没做acwing周赛了, 之前vp过一些周赛,感觉风格变了。

这次感觉还可以,都是些眼熟的套路题。


A. 5458. 进水排水问题

思路: 签到题

按题意描述编写

import java.io.*;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();System.out.println((a + b) < (c + d) ? "YES" : "NO");}}

B. 5459. 区间嵌套

思路: 偏序

经典的俄罗斯套娃模型,典题

主要通过 排序 做文章

  • 一级排序,左端点从小到大
  • 二级排序,右端点从大到小

然后维护最大的右端点区间id即可,不需要treemap维护了

时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;public class Main {public static void main(String[] args) {AReader sc = new AReader();int n = sc.nextInt();int[][] intervals = new int[n][3];for (int i = 0; i < n; i++) {intervals[i][0] = sc.nextInt();intervals[i][1] = sc.nextInt();intervals[i][2] = i;}Arrays.sort(intervals, (a, b) -> {if (a[0] != b[0]) return a[0] < b[0] ? -1 : 1;if (a[1] != b[1]) return a[1] > b[1] ? -1 : 1;return 0;});int ansI = -1, ansJ = -1;// 偏序关系吗?TreeMap<Integer, Integer> tree = new TreeMap<>();for (int i = 0; i < n; i++) {int right = intervals[i][1];Map.Entry<Integer, Integer> ent = tree.ceilingEntry(right);if (ent != null) {ansI = intervals[i][2] + 1;ansJ = ent.getValue() + 1;break;}tree.put(right, intervals[i][2]);}System.out.println(ansI + " " + ansJ);}staticclass AReader {private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));private StringTokenizer tokenizer = new StringTokenizer("");private String innerNextLine() {try {return reader.readLine();} catch (IOException ex) {return null;}}public boolean hasNext() {while (!tokenizer.hasMoreTokens()) {String nextLine = innerNextLine();if (nextLine == null) {return false;}tokenizer = new StringTokenizer(nextLine);}return true;}public String nextLine() {tokenizer = new StringTokenizer("");return innerNextLine();}public String next() {hasNext();return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}//        public BigInteger nextBigInt() {
//            return new BigInteger(next());
//        }// 若需要nextDouble等方法,请自行调用Double.parseDouble包装}}

C. 5460. 连续整数序列

思路: DP + 回溯数组


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {AReader sc = new AReader();int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = sc.nextInt();}Map<Integer, Integer> hash = new HashMap<>();int[] dp = new int[n];int[] from = new int[n];Arrays.fill(from,  -1);for (int i = 0; i < n; i++) {int v = arr[i];if (hash.containsKey(v - 1)) {dp[i] = dp[hash.get(v - 1)] + 1;from[i] = hash.get(v - 1);} else {dp[i] = 1;from[i] = -1;}hash.put(v, i);}int idx = -1;for (int i = 0; i < n; i++) {if (idx == -1 || dp[idx] < dp[i]) {idx = i;}}System.out.println(dp[idx]);List<Integer> lists = new ArrayList<>();while (idx != -1) {lists.add(idx + 1);idx = from[idx];}Collections.reverse(lists);System.out.println(lists.stream().map(String::valueOf).collect(Collectors.joining(" ")));}staticclass AReader {private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));private StringTokenizer tokenizer = new StringTokenizer("");private String innerNextLine() {try {return reader.readLine();} catch (IOException ex) {return null;}}public boolean hasNext() {while (!tokenizer.hasMoreTokens()) {String nextLine = innerNextLine();if (nextLine == null) {return false;}tokenizer = new StringTokenizer(nextLine);}return true;}public String nextLine() {tokenizer = new StringTokenizer("");return innerNextLine();}public String next() {hasNext();return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}//        public BigInteger nextBigInt() {
//            return new BigInteger(next());
//        }// 若需要nextDouble等方法,请自行调用Double.parseDouble包装}}

写在最后

在这里插入图片描述

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

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

相关文章

【QT+QGIS跨平台编译】之四:【libSSH2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libSSH2介绍二、文件下载三、文件分析四、pro文件五、编译实践 一、libSSH2介绍 libSSH2是一个开源的C函数库&#xff0c;用来实现SSH2协议。 SSH(Secure SHell)到目前为止有两个不兼容的版本——SSH1和SSH2。 SSH2避免了RSA的专利问题&#xff0c;并修补了CRC…

Mybatis 动态SQL条件查询(注释和XML方式都有)

需求 : 根据用户的输入情况进行条件查询 新建了一个 userInfo2Mapper 接口,然后写下如下代码,声明 selectByCondition 这个方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import j…

DCDC电路基础认知

前言 从开关电源&#xff08;BMS充电器&#xff09;入门硬件之——DCDC电路基础认知 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 1280253714qq.com 最近做的项目中有个需求&#xff0c;输入的电压是变化的&#xff08;12-24V&#xff09;&#xff0c;但要保证…

unity单例模式

文章目录 在Unity中&#xff0c;单例模式是一种常用的编程设计模式&#xff0c;用于确保在整个应用程序生命周期中&#xff0c;只有一个类的实例存在。这样可以保证数据的全局唯一性和共享性&#xff0c;例如游戏场景中的资源管理器、游戏控制器、事件管理器等。 以下是一个简单…

EtherNet/IP开发:C++开发CIP源代码

① 介绍一下CIP CIP是一种考虑到自动化行业而设计的通用协议。然而&#xff0c;由于其开放性&#xff0c;它可以并且已经应用于更多的领域。CIP网络库包含若干卷&#xff1a; 第1卷介绍了适用于所有网络自适应的CIP的常见方面。本卷包含通用对象库和设备配置文件库&#xff0…

数据结构期末复习(5)图

图 在数据结构中&#xff0c;图&#xff08;Graph&#xff09;是由节点&#xff08;Vertex&#xff09;和边&#xff08;Edge&#xff09;组成的一种非线性数据结构。图可以用来表示不同事物之间的关系&#xff0c;比如社交网络中的用户和好友关系、城市之间的道路网络等。 图…

RLC如何通过改变频率实现输出稳压

当开关频率工作在容性区域时&#xff0c;容抗抵消完感抗还有剩余&#xff0c;所以容抗感抗可以近似为一个容抗Cr,但加上频率的改变&#xff0c;容抗又可以近似为一个可调电阻 那又改如何控制频率&#xff0c;保持输出稳压&#xff1f; 当输入与输出电压不变时&#xff0c;Rac变…

编写servlet

编写servlet 上述代码中的HTML页面将雇员ID发送给servlet。要创建servlet读取客户机发送的雇员ID并检索雇员的详细信息,需要执行以下步骤: 在“项目”选项卡中右击“Employee”节点,然后选择“新建”→Servlet。将显示“新建Servlet”对话框。在“类名”文本框中输入Employ…

苹果电脑(Mac)的node版本安装以及升降级

在开发过程中&#xff0c;对于不同的开发环境或者较老的项目可能需要切换不同的node版本&#xff0c;此过程会涉及到node版本的升级与降级&#xff0c;安装node版本管理模块n&#xff08;sudo命令&#xff09;。 全局安装n模块 sudo npm install n -g//输入后回车&#xff0c…

国产操作系统:VirtualBox安装openKylin-1.0.1虚拟机并配置网络

国产操作系统&#xff1a;VirtualBox安装openKylin-1.0.1虚拟机并配置网络 openKylin 操作系统目前适配支持X86、ARM、RISC-V三个架构的个人电脑、平板电脑及教育开发板&#xff0c;可以满足绝大多数个人用户及开发者的使用需求。适用于在VirtualBox平台上安装openKylin-1.0.1…

Python语法进阶——类

Python中的数据类型都属于类。int、str、list都是Python定义好的数据类型类。 print(type(list))#<class type> print(type(list()))#<class list> 一、自定义数据类型 一、语法 class 类名():pass #类名 要求首字母大写 #()可写可省略。 #pass在这里只是用来保证…

Unity学习-逐帧图集动画制作

首先在文件部分创建一个Sprite Library Asset 然后点击创建出来的文件 点下面的加号添加对应的图 添加完成之后点一下Apply 然后新建一个物体 添加这三个组件 其中SpriteLibrary里面 把你刚刚创建的图集文件拉过来 Sprite Resolver选择对应的动作和图片 然后开始制作动画 An…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及电-气-热综合能源系统的输配协同优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这篇文章的标题表明文章将关注于综合能源系统&#xff0c;特别是涉及电力、气体和热能的输配协同优化调度。以下是对标题的一些关键词的解读&#xff1…

Matlab/simulink风储调频,多台飞轮储能调频,风电场调频,飞轮储能带有虚拟惯量和下垂控制,三机九节点系统一次调频,离散模型

上述为不同飞轮储能容量配比&#xff0c;风电场容量配比&#xff0c;以及有无附加频率控制的飞轮储能出力分析。 飞轮储能驱动电机为永磁同步机电机PMSG 有无飞轮储能容量较小&#xff0c;所以对频率的改善效果有限&#xff0c;不过可以继续增大容量&#xff0c;从而增大频率的…

【音视频】基于ffmpeg对视频的切割/合成/推流

背景 基于FFmpeg对视频进行切割、合成和推流的价值和意义在于它提供了一种高效、灵活且免费的方式来实现视频内容的定制、管理和分发。通过FFmpeg&#xff0c;用户可以轻松地剪辑视频片段&#xff0c;根据需要去除不必要的部分或提取特定时间段的内容&#xff0c;从而优化观看…

C#,入门教程(23)——数据类型转换的一点基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(22)——函数的基础知识https://blog.csdn.net/beijinghorn/article/details/124181689 先简单回顾一下&#xff0c;C#的数据类型大致有这样一些&#xff1a; &#xff08;1&#xff09;原始类型&#xff1a;byte, bool, int, doubl…

智慧文旅一机游:科技与文化的完美结合,引领智慧文旅新潮流,智慧旅游未来已来

一、科技与文化的完美结合&#xff1a;智慧文旅一机游的核心理念 智慧文旅一机游&#xff0c;是科技与文化相融合的产物&#xff0c;它不仅代表着旅游行业的创新与发展&#xff0c;更是一种文化与科技完美结合的生活方式。一机游的核心理念在于通过先进的科技手段&#xff0c;提…

IOT pwn

已经过了填坑的黄金时期 环境搭建 交叉编译工具链 很多开源项目需要交叉编译到特定架构上&#xff0c;因此需要安装对应的交叉编译工具链。 sudo apt install gcc-arm-linux-gnueabi g-arm-linux-gnueabi -y sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu -…

两道日常练习题:洛谷P1165日志分析 + 洛谷P1553 数字反转(升级版)

两道题的代码我都会附着文字详解&#xff0c;并且会简洁说明一下思路&#xff1a; 先看第一套题目&#xff1a; 题干&#xff1a; 输入输出&#xff1a; 数据范围&#xff1a; 这很明显是一道栈的问题&#xff0c;我们只需要根据题意模拟即可&#xff0c;需要注意的是当输入的…

动手做个无人机—材料篇

基于浙江大学Fast-Lab(高飞&#xff0c;潘能)和深蓝学院合作课程&#xff1a;第二课&#xff1a;动力套焊接_哔哩哔哩_bilibili 无人机材料1&#xff1a; 1、NUC 猛虎峡谷 准系统 i5薄款&#xff1a; 一款机载电脑&#xff0c;使用i5-1135G7 &#xff0c;最大内存64G&#xff…