Codeforces Round 1027 (Div. 3)(A-E)

article/2025/9/5 11:39:24

题面链接:Dashboard - Codeforces Round 1027 (Div. 3) - Codeforces

A. Square Year

思路

先看数字能否被开方,如果能输出0  \sqrt{x} 即可

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;void solve(){string s;cin>>s;int x=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');int c=sqrtl(x);if(c*c!=x){cout<<"-1\n";}else{cout<<0<<" "<<c<<"\n";}
}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

B. Not Quite a Palindromic String

思路

统计1和0的数量,由于我们要k个好的pair,那么我们需要1 1或者0 0开始消除之后剩下的应该是1的数量=0的数量

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;void solve(){int n,k;cin>>n>>k;string s;cin>>s;s=" "+s;int ct0=0,ct1=0;for(int i=1;i<=n;i++){if(s[i]=='0') ct0++;else ct1++;}int t=(abs(ct1-ct0))/2;k-=t;if(k>=0&&k%2==0){cout<<"YES\n";}else{cout<<"NO\n";}
}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

C. Need More Arrays

思路

贪心,我们只要遇到一个比a[i]大且大超过1的数那么ct++,可以保证这是最优的

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;void solve(){int n;cin>>n;vector<int> a(n+10);for(int i=1;i<=n;i++){cin>>a[i];}int i=1;int ct=0;while(i<=n){int ti=i;while(ti<=n&&a[ti]<=a[i]+1){ti++;}i=ti;ct++;}cout<<ct<<"\n";
}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

D. Come a Little Closer

思路

贪心+模拟,我们贪心地想如果要移动某一点一定是,最上或最下或最左或最右的四个点中的一个,那么我们枚举一下去掉某一点之后的剩下点的答案取最小值即可

ps:其实第一步的贪心可以去掉,我们可以枚举每个点(将此点去掉),用前后信息维护最左右上下的边界来计算

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;struct node{int x,y;
};int cal(vector<node>& tx,int id,int n){   //将id的坐标去掉后的值if(n==1) return 1;int tup=inf,tdown=-1,tl=inf,tr=-1;for(int i=1;i<=n;i++){if(i==id) continue;if(tup>tx[i].x){      //记录最上面tup=tx[i].x;}if(tdown<tx[i].x){     //记录最下面tdown=tx[i].x;}if(tl>tx[i].y){         //记录最左边tl=tx[i].y;}if(tr<tx[i].y){     //记录最右边tr=tx[i].y;}}int h=(tdown-tup+1);int l=(tr-tl+1);if(n<=h*l){return h*l;}else{return h*l+min(h,l);}
}void solve(){int n;cin>>n;vector<node> mon(n+10);int up=1,down=1,left=1,right=1;int tup=inf,tdown=-1,tl=inf,tr=-1;for(int i=1;i<=n;i++){cin>>mon[i].x>>mon[i].y;if(tup>mon[i].x){      //记录最上面的坐标tup=mon[i].x;up=i;}if(tdown<mon[i].x){     //记录最下面的坐标tdown=mon[i].x;down=i;}if(tl>mon[i].y){    //记录最左边的坐标tl=mon[i].y;left=i;}if(tr<mon[i].y){   //记录最右边的坐标tr=mon[i].y;right=i;}}int ans=min(min(cal(mon,up,n),cal(mon,down,n)),min(cal(mon,left,n),cal(mon,right,n)));cout<<ans<<"\n";
}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

E. Kirei Attacks the Estate

思路

树上dp,我们用ans数组来记录答案状态转移方程为ans[u]=max(a[u],ans[f[fa]]+a[u]-a[fa]);

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;void solve(){int n;cin>>n;vector<int> a(n+10);for(int i=1;i<=n;i++){cin>>a[i];}vector<vi> e(n+10);for(int i=1;i<n;i++){int u,v;cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}vi ans(n+10);vi f(n+10); //记录父亲节点auto dfs=[&](auto self,int u,int fa)->void{f[u]=fa;ans[u]=max(1ll*a[u],ans[f[fa]]+a[u]-a[fa]);for(auto v:e[u]){if(v==fa) continue;self(self,v,u);}};dfs(dfs,1,0);for(int i=1;i<=n;i++){cout<<ans[i]<<" \n"[i==n];}}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}


http://www.hkcw.cn/article/JPsNyWhnMb.shtml

相关文章

在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label

在MDK中自动部署LVGL&#xff0c;在stm32f407ZGT6移植LVGL-8.3 一、硬件平台二、实现功能三、移植步骤1、下载LVGL-8.42、MDK中安装LVGL-8.43、配置RTE4、配置头文件 lv_conf_cmsis.h5、配置lv_port_disp_template 四、添加心跳相关文件1、在STM32CubeMX中配置TIM7的参数2、使能…

数据结构数组总结

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&#xff1a;…

集成均衡功能电池保护芯片在大功率移动电源的应用,创芯微CM1341-DAT、杰华特JW3312、赛微微电CW1244、中颖SH366006

一文了解集成均衡功能电池保护IC在大功率移动电源的应用 创芯微CM1341-DAT 创芯微CM1341-DAT是一款专用于4串锂离子/磷酸铁锂电池的保护芯片&#xff0c;内置有高精度电压检测电路和电流检测电路。通过检测各节电池的电压、充放电电流及温度等信息&#xff0c;实现电池过充电…

2025年机电一体化与自动化系统国际会议(ICMAS 2025)

2025年机电一体化与自动化系统国际会议&#xff08;ICMAS 2025&#xff09; 2025 International Conference on Mechatronics and Automation Systems 一、大会信息 会议简称&#xff1a;ICMAS 2025 大会地点&#xff1a;中国南京 审稿通知&#xff1a;投稿后2-3日内通知 投稿…

Linux多线程(四)之Linux线程控制2【线程等待和线程终止】

文章目录 线程等待线程终止return退出线程pthread_exit退出线程pthread_cancel取消线程 线程等待 哪个线程先运行&#xff1f;由调度器说的算。 但是主线程一定要是最后退出&#xff01; 为什么需要线程等待&#xff1f; 已经退出的线程&#xff0c;其空间没有被释放&#…

Python自动化之selenium语句——浏览器设置显示尺寸、截图、刷新网页

目录 一、浏览器设置最大化、最小化 1.浏览器最大化 2.浏览器最小化 二、浏览器打开的位置、尺寸 1.浏览器打开位置 2.浏览器打开尺寸 三、浏览器截图 1.截图语句 2.运行成功后查看 四、刷新网页 上一节实现了打开浏览器、打开指定网址、关闭浏览器的操作&#xff0c…

Selenium的第三天打卡——Selenium应用(selenium元素选取以及浏览器操作)

Selenium 4 应用示例解析 目录 Selenium 4 应用示例解析 一、基本配置 二、浏览器设置&#xff08;这之前没有html基础的朋友可以先去了解一下html哦&#xff09; 三、元素定位方法 1.Selenium 4 元素的选中 ①开发者模式 ②观察代码 2.Selenium 4 元素抓取的核心内容…

智能仓储落地:机器人如何通过自动化减少仓库操作失误?

仓库作业的速度和准确性至关重要&#xff0c;尤其是在当前对无差错、高效作业的要求达到前所未有的环境下。每一个错误&#xff0c;无论是物品放错位置还是库存差异&#xff0c;都会在供应链中产生连锁反应&#xff0c;造成延误、增加成本&#xff0c;并最终影响客户满意度。 …

【Linux系统移植】Cortex-A8 Linux系统移植(超详细)

目录 前言 一、ARM开发板ARM简介RISC和CISCARM产品分布核心板S5pv210 SOC嵌入式系统开发方式 二、嵌入式系统组成为什么要系统移植内核移植框图 三、嵌入式开发环境搭建搭建开发环境总流程设置ubuntu与windows共享目录修改用户为root用户安装NFS服务器安装tftp服务器安装交叉编…

如何通过数据分析优化项目决策

通过数据分析优化项目决策需从明确数据分析目标、选择适当的数据分析工具、确保数据质量、建立数据驱动文化等方面入手&#xff0c;其中&#xff0c;明确数据分析目标是优化决策过程的基础&#xff0c;只有清晰明确的数据分析目标才能指导有效的数据采集与分析&#xff0c;避免…

纯前端实现图片伪3D视差效果

作者&#xff1a;vivo 互联网前端团队- Su Ning 本文通过depth-anything获取图片的深度图&#xff0c;同时基于pixi.js&#xff0c;通过着色器编程&#xff0c;实现了通过深度图驱动的伪3D效果。该方案支持鼠标/手势与手机陀螺仪双模式交互&#xff0c;在保证性能的同时&#x…

在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像

文章目录 前言一、版本检查检查ROS2版本 二、步骤1.下载对应版本的PX4(1)检查PX4版本(2)修改文件名(3)下载正确的PX4版本 2.下载对应版本的Gazebo(1)检查Gazebo版本(2)卸载不正确的Gazebo版本(3)下载正确的Gazebo版本 3.安装bridge包4.启动 总结 前言 在ROS2的环境下&#xff…

Git的三种合并方式

在 Gitee&#xff08;码云&#xff09;中合并分支主要有三种方式&#xff1a;​普通合并&#xff08;Merge Commit&#xff09;、压缩合并&#xff08;Squash Merge&#xff09;​和变基合并&#xff08;Rebase Merge&#xff09;​。每种方式适用于不同的场景&#xff0c;各有…

微机系统-汇编语言入门

汇编语言及其程序设计 -1:汇编语言的语句格式 [名字] 操作符 操作数&#xff1b; [注释] 名字: 1. 是一种标识符。 2. 组成&#xff1a;A&#xff5e;Z&#xff0c;a&#xff5e;z&#xff1b; 0&#xff5e;9&#xff1b; 专用符号 &#xff1f;&#xff0e; _$ 3. 限制&…

互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

一&#xff1a;并发 1.1MySQL并发事务访问相同记录 &#xff08;1&#xff09;读-读 不影响 &#xff08;2&#xff09;写-写 写的数据需要一个一个来&#xff0c;排队执行 &#xff08;3&#xff09;读-写 两次读…

影楼精修-AI追色算法解析

注意&#xff1a;本文样例图片为了避免侵权&#xff0c;均使用AIGC生成&#xff1b; AI追色是像素蛋糕软件中比较受欢迎的一个功能点&#xff0c;本文将针对AI追色来解析一下大概的技术原理。 功能分析 AI追色实际上可以理解为颜色迁移的一种变体或者叫做升级版&#xff0c;…

MATLAB中的table数据类型:高效数据管理的利器

MATLAB中的table数据类型&#xff1a;高效数据管理的利器 什么是table数据类型&#xff1f; MATLAB中的table是一种用于存储列向数据的数据类型&#xff0c;它将不同类型的数据组织在一个表格结构中&#xff0c;类似于电子表格或数据库表。自R2013b版本引入以来&#xff0c;t…

nacos服务注册

Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 1. 服务注册到nacos Nacos是SpringCloudAlibaba的组件&#xff0c;而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此…

【FPGA开发】Ubuntu16.04环境下配置Vivado2018.3—附软件包

文章目录 环境介绍关键步骤记录安装虚拟机及镜像安装vivadolicense导入 环境介绍 vivado&#xff1a;2018.3 虚拟机&#xff1a;vmware 16 pro 镜像&#xff1a;Ubuntu16.04 64位 所有相关软件压缩包&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/fd2730b46b20 提取码…

安全帽检测算法AI智能分析网关V4守护工地/矿山/工厂等多场景作业安全

一、方案概述​ 在工业生产与建筑施工场景中&#xff0c;安全帽是保障人员安全的重要装备。但传统人工巡检效率低、易疏漏&#xff0c;难以满足现代安全管理需求。AI智能分析网关V4安全帽检测方案&#xff0c;借助人工智能与计算机视觉技术&#xff0c;实现作业现场安全帽佩戴…