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

Hello 2024补题

Wallet Exchange(Problem - A - Codeforces)

题目大意:A,B做游戏,它们的钱包里各有a,b个硬币,轮到它们操作时,它们可以扔掉自己或者对手钱包里的硬币,谁不能操作谁输,问最后的胜者是谁。

思路:很显然取决于总数的奇偶性,奇数则A胜,偶数则B胜。

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int a,b;scanf("%d%d",&a,&b);a += b;if(a%2) printf("Alice\n");else printf("Bob\n");}
}

Plus-Minus Split(Problem - B - Codeforces)

题目大意:+代表1,-代表-1,给定一个字串,要求进行划分(划分中原来的相对顺序不能改变),每个划分的值是划分内的和的绝对值*划分的长度,结果是各个划分值的和,问最小的结果是多少。

思路:很显然只要划分的和为0,那么这段划分的值就最小,我们只用看有多少不能抵消,如果不能抵消那么就一个一个划开,使长度最小。

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);string s;cin>>s;int c=0;for(int i=0;i<n;i++){if(s[i]=='+') c++;else c--;}printf("%d\n",abs(c));}
}

Grouping Increases(Problem - C - Codeforces)

题目大意:现有一个a[],需要把它拆成两个数组,a[]中的元素只能属于两个数组之一,而且相对顺序不能改变,然后我们去计算两个数组中b[i]<b[i+1]的数对的对数和,要求输出最小和。

思路:这道题实际上是贪心的题目,因为只需要考虑相邻元素之间的关系,我们只用记录新数组最后位置的元素即可,假设已经插入了i-1个元素了,现在要插入第i个元素,而此时新数组的两个元素分别为b,c,且b<c(b==c那么两个数组完全等价,没有讨论的必要,随便插入一个即可),那么现在的问题就转化成将a[i]插入哪个数组。a[i]与b,c有三种关系:

1.a[i]<=b<c:此时,无论插入哪个数组都不会产生影响,但是我们注意到a[i]的插入会减小末尾元素,所以如果插c后面,a[i+1]如果小于c,但是大于b,就不得不产生影响,所以为了后面能让更大的数插入不产生影响,我们将它插到b后面。

2.b<c<a[i]:显然插在哪个后面都会造成影响,插入的过程实际上也是增加末尾元素的机会,显然增加b比增加c效益更大,因为增加b后,b,c后面都可以接更大的元素了。

3.b<a[i]=<c:此时插在c后面不会造成影响,另外对于a[i]<a[i+1]<c,a[i]插在b后面a[i+1]插在c后面,与a[i]插在c后面,a[i+1]插在b后面实际影响是等价的(b<a[i+1]<a[i],讨论类似,也是产生1个影响)再者若a[i+1]>c,将a[i]插在c后面还能减少一次影响。

至此贪心部分就讨论完毕。(边界可以再细推一下) 

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int b=0x3f3f3f3f,c=0x3f3f3f3f;//为了保证b<c始终成立,记得更新后交换int ans=0;for(int i=1;i<=n;i++){int x;scanf("%d",&x);if(x<=b) b=x;else if(x>c) {b=x;swap(b,c);ans++;}else c=x;}printf("%d\n",ans);}
}

这个题的贪心解法和活动 - AcWing第二问有些相似,我们在此处一并讨论一下。

每个系统只能拦截非上升子序列,第二问要求找出最少需要配备多少个系统,才能拦截所有的导弹,我们再抽象一点,这题考的就是用多少个非上升的序列可以覆盖整个区间。也是从贪心的角度来进行分析:

假设现在已经有若干个系统了,然后要拦截高度为h的导弹,我们有两种选择,一种是用已经有的系统去拦截,另一种是新开一个系统,根据每个系统的性质我们可以知道,系统末尾元素肯定是最小的,而且比它大的元素不能接在它后面,所以如果所有系统的末尾都小于h,那么只能新开,如果有一部分系统的末尾不小于h,那么为了使结果尽可能的少,肯定是接在它们中某一个的后面更划算,那么就要考虑接在谁的后面更好,把h接上后会减少序列末尾的值,为了使它们能够拦截后面更高的导弹,肯定是将h接在这些序列中小的那个后面才是最优的解法。进而我们考虑如果维护,显然这些结尾是满足单调递增的关系的,这样就可以二分查找答案。进而该题的贪心部分分析完毕。

这两题都有一个很明显是贪心的点,就是需要对于每一个点进行决策,那么对每一个决策讨论的过程就是贪心的过程。所以下次涉及需要对一个区间进行操作,而且每步操作需要考虑策略的时候就要想一想贪心是否可以。

01 Tree(Problem - D - Codeforces)

题目大意:给出一个序列,我们需要判断这个序列是否与某个特定二叉树dfs遍历的叶子节点序相同,这里的特定二叉树是指除了叶子节点外的节点都有两个子节点,同时两条边的边权一个为1,一个为0.

思路:这里的叶子节点可能有兄弟节点,也可能没有兄弟节点。来看叶子节点与父节点的关系,父节点与其中一个子节点的值相同,比另一个子节点的值小1,那么如果一个点的左右相邻位置有比它小1的值,那么就说明它可能有兄弟节点,我们如果删除较大的子节点,那么因为另一个子节点的值与父节点的值相同,所以实际上相当于删除了两个子节点,将父节点变成一个叶子节点。我们可以确定值最大的那个点一定有兄弟节点,我们从最大的那个入手,不断往前删,最后如果只有一个点没被删,而且值为0,那么就说明有这样的二叉存在。

#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int a[N],l[N],r[N],st[N];
int n;
int ok(int k)
{if(k<1||k>n) return 0;if(a[k]-a[l[k]]==1||a[k]-a[r[k]]==1) return 1;return 0;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);l[i]=i-1;r[i]=i+1;st[i]=0;}a[0]=a[n+1]=-10;//指针会指到它们,初始化一下,防止误判priority_queue<pair<int,int>>p;for(int i=1;i<=n;i++){if(ok(i)){st[i]=1;p.push({a[i],i});}}while(p.size()){auto it=p.top();p.pop();int v=it.first,i=it.second;//这里更新一定要特别注意,很容易出错。l[r[i]]=l[i];r[l[i]]=r[i];if(!st[l[i]]&&ok(l[i])){st[l[i]]=1;p.push({a[l[i]],l[i]});}if(!st[r[i]]&&ok(r[i])){st[r[i]]=1;p.push({a[r[i]],r[i]});}}int f=0,v=3e5;for(int i=1;i<=n;i++){if(!st[i])f++;v=min(v,a[i]);}if(f==1&&v==0) printf("YES\n");else printf("NO\n");}
}

有时候做不出来的意义只是告诉你该学什么东西了,别附加太多别的意义。

相关文章:

Hello 2024补题

Wallet Exchange&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;A&#xff0c;B做游戏&#xff0c;它们的钱包里各有a,b个硬币&#xff0c;轮到它们操作时&#xff0c;它们可以扔掉自己或者对手钱包里的硬币&#xff0c;谁不能操作谁输&#xff0c;问…...

git权限问题导致的所有文件被修改问题

git忽略文件权限的修改 git config core.filemode false...

C语言经典算法之堆排序算法

目录 前言 建议 简介 A.建堆&#xff1a; B.排序 一、代码实现 二、时空复杂度 A.时间复杂度 B.空间复杂度 三、稳定性 四、现实中的应用 前言 建议 1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住算法。 2.建议读者学习算法的时候&#xff0c;自己…...

前端笔试题(一)

1.vue如何实现数据的双向绑定 利用v-model来实现双向数据绑定 通过Object.defineProperty()来劫持各个属性的setter&#xff0c;getter&#xff0c;在数据变动时发布消息给订阅者&#xff0c;触发相应的监听回调来渲染视图 2.使用vue渲染大量数据时&#xff0c;如何进行优化…...

Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统技术文档

宿舍出入系统 1.2采集学生人脸信息和宿管人脸信息 前端使用navigator.mediaDevices.getUserMedia&#xff08;考虑个浏览器的内核差异&#xff0c;此处以最新的标准API:navigator.mediaDevices.getUserMedia为例&#xff09;获取用户浏览器的摄像头并开启视频&#xff0c;使用…...

网络共享服务

存储类型&#xff1a;直连式&#xff08;DAS&#xff09;:距离最近&#xff0c;存储设备且直接连接到服务器上 存储区域网络&#xff08;SAN&#xff09;&#xff1a;适用于大型应用或数据库系统&#xff0c;可以使用文件的空间&#xff0c; 以及管理空间…...

资本主义的市场竞争?IBM总监Jerry Chow 谈量子计算的未来

​ 人物介绍&#xff1a;Jerry M.Chow博士在耶鲁大学取得物理博士学位。担任IBM量子系统总监&#xff0c;其研究重点是面向容错量子计算的多量子比特系统。他主要为IBM的量子系统路线图制定战略&#xff0c;与硬件团队领导者一起设定目标研究领域&#xff0c;同时也确保最佳的客…...

什么是残差矢量量化?

一、说明 基于残差矢量量化的神经音频压缩方法正在重塑现代音频编解码器的格局。在本指南中&#xff0c;了解 RVQ 背后的基本思想以及它如何增强神经压缩。 数据压缩在当今的数字世界中发挥着关键作用&#xff0c;促进信息的高效存储和传输。由于当今超过 80% 的互联网流量来自…...

计算机网络(第六版)复习提纲2

二、物理层 2.1 物理层基本概念 物理层协议常常成为物理层规程 物理层的主要任务为确定与传输媒体的接口有关的一些特性&#xff1a; 1.机械特性&#xff1a;指明接口所用接线器的尺寸等&#xff1b; 2.电气特性&#xff1a;指明接口电缆各条线上的电压范围&#xff1b; 3.功能…...

11k+star 开源笔记应用真香 centos部署教程

leanote binary installation on Mac and Linux (En) life edited this page on Jul 21, 2017 10 revisions Pages 26 Home How to develop leanote 如何开发leanote How to install leanote on Ubuntu? How to Upgrade Leanote Install Mongodb leanote api leanote …...

win下安装tensorflow

1首先ctrlaltdelete打开任务管理器查看GPU型号 2或者右键我的电脑然后如下方式查看显卡发现没有navida没有GPU...

SpringBoot 入门

1.SpringBoot介绍 1.1.什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其中“Boot”的意思就是“引导”&#xff0c;Spring Boot 并不是对 Spring 功能上的增强&#xff0c;而是提供了一种快速开发 Spring应用的方式。 1.2.Spring Boot 特点 • 嵌…...

使用WebFlux处理WebSocket连接的全生命周期案例

使用WebFlux处理WebSocket连接的全生命周期案例 简介&#xff1a; 在Web应用程序开发中&#xff0c;WebSocket是一种用于实现双向通信的协议。Spring WebFlux提供了对WebSocket的支持&#xff0c;使您能够轻松地处理WebSocket连接和消息。本博客将介绍如何使用WebFlux处理WebS…...

【REST2SQL】10 REST2SQL操作指南

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…...

199_二叉树的右视图

描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 思路 对树进行深度优先搜索&#xff0c;在搜索过程中&#xff0c;我们总是先访问右子树。那么对于每一层来说&#xff0c;…...

第七讲_css浮动

css浮动 1. 设置浮动2. 浮动的特点3. 浮动的影响4. 解决浮动的影响4.1 解决父元素高度塌陷的问题4.2 解决对兄弟元素影响问题 1. 设置浮动 浮动是通过float属性设置&#xff0c;float取值范围&#xff1a; none&#xff1a;不浮动&#xff0c;默认值。left&#xff1a;向左浮…...

2024秋招,顺丰科技测试开发工程师一面

前言 今天回顾一下&#xff0c;一个被捞的全流程面试经历 时间线 9月21日测评 10月26日技术一面&#xff0c;本来是11点半开始&#xff0c;我正做另一个笔试呢&#xff0c;突然给我打电话开面 20分钟结束&#xff0c;一开始以为KPI&#xff0c;结果给过了 10月31日技术二…...

基于apache的http文件服务配置

背景&#xff1a; 公司的产品使用的第三方模组可以OTA&#xff0c;厂家提供的是window开启软件&#xff0c;这样就可以在本机做http下载服务器&#xff0c;然后使用端口映射的方式&#xff0c;公开到外网&#xff0c;这样就可以进行4G网络访问内网服务器了。但这个有个弊端&am…...

连铸工艺和模铸工艺有什么区别。

问题描述&#xff1a;连铸工艺和模铸工艺有什么区别。 问题解答&#xff1a; 连铸工艺和模铸工艺在多个方面存在显著差异&#xff1a; 指代不同&#xff1a; 模铸是成批大量生产锻件的锻造方法。连铸即为连续铸钢的锻造方法。 工艺不同&#xff1a; 模铸在锻压机械的作用…...

pyqt treeWidget树生成

生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...