2024-2025 ICPC, NERC, Southern and Volga Russian Regional Contest(ABCGJLN)

文章目录

  • N. Fixing the Expression
    • 思路
    • code
  • J. Waiting for...
    • 思路
    • code
  • C. DIY
    • 思路
    • code
  • L. Bridge Renovation
    • 思路
    • code
  • A. Bonus Project
    • 思路
    • code
  • G. Guess One Character
    • 思路
    • code
  • B. Make It Equal
    • 思路
    • code

N. Fixing the Expression

思路

签到题,只改变中间的字符即可

code

void solve(){int a,b;char o;cin >> a >> o >> b;if(a>b){cout << a << ">" << b << endl;}else if(a<b){cout << a << "<" << b << endl;}else cout << a << "=" << b << endl;return ;
}

J. Waiting for…

思路

签到题,如果读入的是P字符,将候车人数累加
如果读入为B字符,分2种情况:

  • 候车的人都能上车并且剩余的空座位大于等于一,输出YES
  • 反之,将候车人数减去空座位的数量,输出NO

code

int a=0;
void solve(){char o;int n;cin >> o >> n;if(o=='P') a+=n;else{int sum=n-a;if(sum>=1){a=0;cout << "YES" << endl;}else{a-=n;cout << "NO" << endl;}}return ;
}

C. DIY

思路

将成对的数进行排序,找出其中第一小的数、第二小的数、第一大的数、第二大的数
输出这些数即可

code

void solve(){int n;cin >> n;vector<int> v;map<int,int> m;int sum=0;for(int i=1;i<=n;++i){int x;cin >> x;m[x]++;} for(auto i : m){if(i.se>=2){sum+=i.se/2;if(i.se & 1){for(int j=1;j<=i.se-1;++j) v.push_back(i.fi);}else{for(int j=1;j<=i.se;++j) v.push_back(i.fi);}}}if(sum<4){cout << "NO" << endl;return ;}sort(v.begin(),v.end());int len=v.size();int a1=v[0],a2=v[2],a3=v[v.size()-1-2],a4=v[v.size()-1];cout << "YES" << endl;cout << a1 << " " << a2 << " " << a1 << " " << a4 << " " << a3 << " " << a2 << " " << a3 << " " << a4 << endl;return ;
}

L. Bridge Renovation

思路

先拼18 18 21 和 21 21 18
最多会剩下1 2 个木板,在让剩下的木板和25拼,最后向上取整

code

void solve(){int n;cin >> n;int ans=n*2/3;int k=n*2%3+n;cout << ans+(k+1)/2 << endl; return ;
}

A. Bonus Project

思路

由于每个人都想让自己获利最多,那么排在前面的工程师有最佳选择权
先算出每个工程师最大的工作单位c,接下来判断工程师会不会罢工:

  • 累加所有工程师最大的工作单位c,如果比k小,全部输出0
  • 反之,倒着遍历数组,最后面的工程师干的工作单位c最多
    当工程师需要干的工作单位等于k时,结束循环

最后正序遍历数组即可

code

const int N=1e6+5;
int a[N],b[N],c[N],ans[N];
void solve(){int n,k,sum=0;cin >> n >> k;for(int i=1;i<=n;++i) cin >> a[i];for(int i=1;i<=n;++i) cin >> b[i];for(int i=1;i<=n;++i){c[i]=a[i]/b[i];sum+=c[i];}if(sum<k){for(int i=1;i<=n;++i) cout << 0 << " ";return ;}for(int i=n;i>=1;--i){if(k>=c[i]){ans[i]=c[i];k-=c[i];}else{ans[i]=k;break;}}for(int i=1;i<=n;++i) cout << ans[i] << " ";return ;
}

G. Guess One Character

思路

一道很有意思的思维题
对于3次询问确定一个值,很显然要我们去确定第一个字符或者最后一个字符
设 a = “1” 子串的个数 b= “11” 子串的个数
a-b 相当于将字符串去重,将连续的1变为单个1

例如:
11010111
a = 6
b = 3
a-b=3,字符串为10101

然后查询01子串的个数,设01子串的个数为c
如果a=b+c,则说明第一个字符为0
反之,第一个字符为1

怎么得来的?,让我们接着看这个样例
10101,显然01的个数为2, 2 + 3 ! = 6 2+3!=6 2+3=6

如果我们将第一个字符1改为0,字符串为01010111
a=5
b=2
a-b,则字符串为010101
显然01的个数为3,2+3=5

如果第一个字符为0,那么b+c一定等于a,反之b+c+1=a,因为它少一个01子串,构不成等号了,需要加一

code

int ask(string s){cout << 1 << " " << s << endl;int res;cin >> res;return res;
}
void solve(){int n;cin >> n;int a=ask("11");int b=ask("01");int c=ask("1");if(a+b==c) cout << "0 1 0" << endl;else cout << "0 1 1" << endl;int x;cin >> x;return ;
}

B. Make It Equal

思路

将数组中所有元素变为相同的一个数字,很显然我们会想到二分
为什么呢,例如:

如果我们将一个序列全部变为3,假设这个序列长度为4,则
序列最终为 3 3 3 3
那么我们在对每个元素操作一次,它就会变为2 2 2 2
即在相同元素的序列操作n次,我们可以让所有元素全部减去一
因此它是具备单调性的

显然我们要让操作次数最少,就应该让这个数字尽可能大,因此二分求右边界
在check函数里面,对于一个数 a i a_i ai

  • 如果 a i < = x a_i<=x ai<=x 不进行操作
  • 如果 a i > x a_i>x ai>x 操作 ( a i + 1 ) / 2 ∗ 2 (a_i+1)/2*2 (ai+1)/22 向上取整

如果只操作一次,显然可能仍会有 a i > x a_i>x ai>x 的情况,所以需要循环多次

由于每次变化,数组中整体的值减一,因此可以用sum统计数组中所有的值
如果无解,输出 − 1 -1 1
有解,输出 s u m − r ∗ n sum-r*n sumrn

code

const int N=1e6+5;
int a[N],b[N],n;
bool check(int x){for(int i=1;i<=n;++i){b[i]=a[i]-x;}while(1){int flag=1;for(int i=1;i<=n;++i){if(b[i]>0){flag=0;b[i%n+1]+=(b[i]+1)/2;b[i]-=(b[i]+1)/2*2;}}if(flag) break;}for(int i=1;i<=n;++i){if(b[i]!=0) return false;}return true;
}
void solve(){cin >> n;int sum=0;for(int i=1;i<=n;++i){cin >> a[i];sum+=a[i];} int l=0,r=1e9+1,flag=1;while(l<r){int mid=l+r+1>>1;if(check(mid)) l=mid,flag=0;else r=mid-1;}cout << (flag?-1 : sum-r*n) << endl;return ;
}

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

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

相关文章

django authentication 登录注册

文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言 之前&#xff0c;写了django制作简易登录系统&#xff0c;这次利用django内置的authentication功能实现注册、登录 提示&#xff…

ctfshow单身杯2024wp

文章目录 ctfshow单身杯2024wp签到好玩的PHPezzz_sstiez_inject ctfshow单身杯2024wp 签到好玩的PHP 考点&#xff1a;序列化反序列化 <?phperror_reporting(0);highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public …

ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案

在金融行业&#xff0c;银行营业厅的安全保卫工作至关重要&#xff0c;它不仅关系到客户资金的安全&#xff0c;也关系到整个银行的信誉和运营效率。随着科技的发展&#xff0c;传统的安全防护措施已经无法满足现代银行对于高效、智能化安全管理的需求。 EasyCVR视频汇聚平台以…

【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法

课程链接 线性回归的从零开始实现 import random import torch from d2l import torch as d2l# 人造数据集 def synthetic_data(w,b,num_examples):Xtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape) # 加入噪声return X,y.reshape…

zotero安卓测试版下载和使用

2023年年底&#xff0c;Zotero官方就已经推出了安卓版的测试版Zotero for Android (beta),&#xff0c;但名额有限且只能通过Google商店下载。此外&#xff0c;还有一些第三方开发的安卓应用&#xff0c;如Zoo for Zotero、ZotDroid等。 在首次使用Zotero安卓版时&#xff0c;用…

基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器&#xff0c;2FSK 的两个频率为:fI15KHz&#xff0c;f23KHz&#xff0c;波特率为 1500 bps,比特0映射为f 载波&#xff0c;比特1映射为 载波。 1&#xff09…

Matlab 深度学习 PINN测试与学习

PINN 与传统神经网络的区别 与传统神经网络的不同之处在于&#xff0c;PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外&#xff0c;额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…

【JavaScript】JavaScript开篇基础(7)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

JavaScript的基础数据类型

一、JavaScript中的数组 定义 数组是一种特殊的对象&#xff0c;用于存储多个值。在JavaScript中&#xff0c;数组可以包含不同的数据类型&#xff0c;如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式&#xff1a; 字面量表示法&#xff1a;let fruits [apple…

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议&#xff1a; webSocket协议&#xff1a; 1.2WebSocket协议&#xff1a; 1.3客户端&#xff08;浏览器&#xff09;实现 1.3.2 WebSocket对象的相关事宜&#xff1a; 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程

1、打开pycharm 没有pycharm的&#xff0c;在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目&#xff0c;Python版本中选择Python39。如果没有该版本&#xff0c;选择下面的Python 3.9下载并安装。 4、打开软件包&#xff0c;搜索“deep-forest”软件包&am…

ES 和Kibana-v2 带用户登录验证

1. 前言 ElasticSearch、可视化操作工具Kibana。如果你是Linux centos系统的话&#xff0c;下面的指令可以一路CV完成服务的部署。 2. 服务搭建 2.1. 部署ElasticSearch 拉取docker镜像 docker pull elasticsearch:7.17.21 创建挂载卷目录 mkdir /**/es-data -p mkdir /**/…

分布式kettle调度平台v6.4.0新功能介绍

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

力扣hot100-->排序

排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输…

.net 8使用hangfire实现库存同步任务

C# 使用HangFire 第一章:.net Framework 4.6 WebAPI 使用Hangfire 第二章:net 8使用hangfire实现库存同步任务 文章目录 C# 使用HangFire前言项目源码一、项目架构二、项目服务介绍HangFire服务结构解析HangfireCollectionExtensions 类ModelHangfireSettingsHttpAuthInfoUs…

滑动窗口最大值(java)

题目描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7]…

springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后&#xff0c;第三方jar会被打包进去吗&#xff1f; 答案是肯定的。做了实验如下&#xff1a; 第三方jar的项目结构及jar包结构如下&#xff1a;&#xff08;该第三方jar采用的是maven工程&#xff0c;打包为普通jar&#xf…

常用Rust日志处理工具教程

在本文中&#xff0c;我想讨论Rust中的日志。通过一些背景信息&#xff0c;我将带您了解两个日志库&#xff1a;env_logger和log4rs。最后&#xff0c;我将分享我的建议和github的片段。 Rust log介绍 log包是Rust中日志API的事实标准&#xff0c;共有五个日志级别&#xff1…

嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点

目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…

时间请求参数、响应

&#xff08;7&#xff09;时间请求参数 1.默认格式转换 控制器 RequestMapping("/commonDate") ResponseBody public String commonDate(Date date){System.out.println("默认格式时间参数 date > "date);return "{module : commonDate}"; }…