School training competition ( Second )

news2024/11/26 6:24:10

A. Medium Number

链接 : Problem - 1760A - Codeforces

 就是求三个数的中位数 : 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

inline void solve(){
	int a[3];
	for(int i=0;i<3;i++) cin >> a[i];
	sort(a,a+3);
	cout << a[1] << endl;
}
 
int main()
{
    IOS
    int _ = 1;
    cin >> _;
    while(_ --) solve();
    return 0;
}

B. Atilla's Favorite Problem

 就是求最大字母的长度 (与a的距离)

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

int n ;
string s;

inline void solve(){
	cin >> n ;
	cin >> s;
	sort(s.begin(),s.end());
	int ans = (int)(s[n-1]-'a'+1);
	cout << ans << endl;
}
 
int main()
{
    IOS
    int _ = 1;
    cin >> _;
    while(_ --) solve();
    return 0;
}

  C. Advantage

链接 : Problem - 1760C - Codeforces

数据范围小的话,随便弄,直接排序之后,求出最大和第二大的值,然后遍历i,求a[i]与除a[i]之外最大值的差距。

 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

int n ;

inline void solve(){
	cin >> n;
	vector<int> a(n),b(n);
	for(int i=0;i<n;i++){
		cin >> b[i];
		a[i] = b[i];
	}
	sort(b.begin(),b.end());
	int ma = b[n-1] , mi = b[n-2];
	for(int i=0;i<n;i++){
		if(a[i] != ma) cout << a[i] - ma << " ";
		else cout << a[i] - mi << " ";
	}
	cout << endl;
}
 
int main()
{
    IOS
    int _ = 1;
    cin >> _;
    while(_ --) solve();
    return 0;
}

D. Challenging Valleys

链接 : Problem - 1760D - Codeforces

 题目大概就是说 给出一个数组,如果该数组有且仅有 一个山谷形状的子数组,就输出yes,否则返回false;

这题直接模拟就可以了

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

int n;
int a[N],b[N];

inline void solve(){
 	cin >> n;
 	for(int i=0;i<n;i++) cin >> b[i];
 	if(n==1){
 		cout << "YES" << endl;
		 return ;	
	}
	int len = n;
	n = 0;
	a[n++] = b[0];
    //把连续的数去重
    for (int i = 1; i < len; ++i) {
        if (b[i] != b[i - 1])
            a[n++] = b[i];
    }
	int cnt = 0;
	
	if(n==1 || n==2){
		cout << "YES" << endl;
		return ;
	}
	
	if(a[1]>a[0]) cnt ++;
	if(a[n-2] > a[n-1]) cnt ++;
	
	for(int i=1;i<n-1;i++){
		if(a[i-1]>a[i] && a[i] < a[i+1]){
			cnt ++;
		}
	}
	if(cnt == 1) cout << "YES" << endl;
	else cout << "NO" << endl;
	return ;
}
 
int main()
{
    IOS
    int _ = 1;
    cin >> _;
    while(_ --) solve();
    return 0;
}

E. Binary Inversions

链接 : Problem - 1760E - Codeforces

思路 : 要求逆序对的数量最大,那么也就只有三种情况,不改 / 将第一个0改为1 / 将最后的1转换为0, 三种情况分情况讨论即可;

 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

inline void solve(){
	int n ; cin >> n;
	LL ans = 0 , res = 0;
	vector<int> a(n);
	for(int i=0;i<n;i++) cin >> a[i];
	int pre = 0;
	for(int i=n-1;i>=0;i--){
		if(a[i]==0) pre++;
		else ans += pre; // 预处理每个 1 后面 有 多少个 0 之和  
	}
	
	pre = 0;
	int t = -1;
	for(int i=0;i<n;i++){
		if(a[i]==0){// 将第一个 0 转换为 1 
			t = i;
			a[i]=1;
			break;
		}
	}
	
	for(int i=n-1;i>=0;i--){
		if(a[i]==0) pre++;
		else res += pre;
	}
	ans = max(ans,res);
	
	if(t!=-1) a[t] = 0;
	
	res = 0;
	pre = 0;
	for(int i=n-1;i>=0;i--){
		if(a[i]==1){ // 将最后的 1 转换为 0 
			a[i]=0;
			break;
		}
	}
	
	for(int i=n-1;i>=0;i--){
		if(a[i]==0) pre++;
		else res += pre;
	}
	
	cout << max(res,ans) << endl;
	return ;
}
 
int main()
{
    IOS
    int _ = 1;
    cin >> _;
    while(_ --) solve();
    return 0;
}

F. Quests

链接 : Problem - 1760F - Codeforces

 

思路 :  二分求 k 值

/**
*  ┏┓   ┏┓
* ┏┛┻━━━┛┻┓
* ┃       ┃
* ┃   ━   ┃ 
*  ████━████
*  ◥██◤ ◥██◤ 
* ┃   ┻   ┃
* ┃       ┃ 
* ┗━┓ Y  ┏━┛
*   ┃ S  ┃ 
*   ┃ S  ┃ 
*   ┃    ┗━━━┓ 
*   ┃  	    ┣┓
*    ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛ 
*    ┃┫┫ ┃┫┫
*    ┗┻┛ ┗┻┛
*/
 
#include<bits/stdc++.h>
using namespace std;

#define int long long
int n,c,d;
int T;
int a[1000050];

inline bool check(int k){
	int now = 1;
	int res = 0;
	for(int i=1;i<=d;++i){
		res+=a[now];
		++now;
		if(now == k+2){
			now = 1;
		}
		if(now == n +1){
			i += k + 1 - n;
			now = 1;
		}
	}
	return res >= c;
}

signed main()
{
	cin >> T ;
	while(T--) {
		cin >> n >> c >> d;
		for(int i=1; i<=n; ++i) cin >> a[i] ;
		int sum = 0;
		sort(a+1,a+n+1);
		reverse(a+1,a+n+1);
		bool  f = 0;
		if(a[1] * d < c){
			puts("Impossible");
			continue;
		}
		if(d <= n){
			sum = 0;
			for(int i=1;i<=d;++i){
				sum+=a[i];
			}
			if(sum >= c){
				f = 1;
			}
		}
		if(f){
			puts("Infinity");
			continue;
		}
		int res = 0;
		int  l =0;
		int  r =1e16+1;
		while(l<=r){
			int mid = l + r >> 1;
			if(check(mid)){
				res = mid;
				l = mid + 1;
			}
			else{
				r = mid - 1;
			}
		}
		if(res == 1e16 + 1){
			puts("Infinity");
			continue;
		}
		cout<<res<<endl;
	}
	return 0;
}

A - Filter

链接 : A - Filter

直接模拟就行了

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 2e5+10;

inline void solve(){
	int n ; cin >> n;
	for(int i=0;i<n;i++){
		int x ; cin >> x;
		if(x %2 ==0){
			cout << x << " ";
		}
	}
}
 
int main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

B - ASCII Art

链接 : B - ASCII Art

也是水题,直接模拟输出即可

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 110;

int a[N][N];
char s[N][N];

inline void solve(){
	int n,m ;cin >> n >> m;
	for(int i=0;i<n;i++)
		for(int j = 0;j<m;j++)
			cin >> a[i][j];
	for(int i=0;i<n;i++)
		for(int j = 0;j<m;j++){
			if(a[i][j] == 0) s[i][j] = '.';
			else s[i][j] = (char)('A'+a[i][j]-1);
		}
	for(int i=0;i<n;i++){
		for(int j = 0;j<m;j++){
			cout << s[i][j];		
		}
		cout << endl;
	}
}
 
int main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

C - Merge Sequences

链接 : C - Merge Sequences

题意大概是合并两个升序排列的数组,然后求a,b两个数组的元素在新数组中的下标是多少:

这一题直接模拟合并过程即可,在合并的过程中将对应的下标分别添加到ca,cb两个数组中; 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;

const int N = 1e5+10;
int a[N],b[N];

int n,m;

inline void solve(){
	cin >> n >> m;
	for(int i=1;i<=n;i++) cin >> a[i];
	for(int i=1;i<=m;i++) cin >> b[i];
	// a , b 递增 
	vector<int> ca,cb; 
	int k = 1 ;
	int p1 = 1 , p2 = 1;
	while(p1 <= n || p2 <= m){
		if(p1 == n+1){
			cb.push_back(k++);
			p2++;
		}else if(p2 == m+1){
			ca.push_back(k++);
			p1++;
		}else if(a[p1] < b[p2]){
			ca.push_back(k++);
			p1++;
		}else{
			cb.push_back(k++);
			p2++;
		}
	}
	for(int x : ca) cout << x << " ";
	cout << endl;
	for(int x : cb) cout << x << " ";
	cout << endl;
}
 
int main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

D - Bank

链接 : D - Bank

思路 : 模拟

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 5e5+10;
	
int n,q;
int t,x;
bool a[N] = {false}; // 标记 是不是已经 go 

inline void solve(){
	cin >> n >> q;
	int cnt = 1 , now = 1;
	while(q--){
		cin >> t;
		if(t==1){
			cnt ++;
		}else if(t==2){
			cin >> x;// 叫到就一定来了 
			a[x] = true;
		}else{
			while(a[now]) ++now;
			cout << now << endl;
		}
	}
}
 
int main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

E - 2xN Grid

链接 : E - 2xN Grid

思路 : 也是模拟 , 一一对应即可,和 C 题类似

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;
typedef long long LL;
const int N = 1e5+10;

LL l,n,m;
LL v1[N],len1[N];//值 和 个数 
LL v2[N],len2[N];

inline void solve(){
	cin >> l >> n >> m;
	for(int i=1;i<=n;i++) cin >> v1[i] >> len1[i];
	for(int i=1;i<=m;i++) cin >> v2[i] >> len2[i];
	LL ans = 0;
	int a = 1 , b = 1;
	while(a <= n && b <= m){
		if(v1[a] == v2[b]) ans += min(len1[a] , len2[b]);
		if(len1[a] < len2[b]){
			len2[b] -= len1[a];
			a++;
		}else{
			len1[a] -= len2[b];
			b++;
		}
	}
	cout << ans << endl;
}
 
int main()
{
    IOS
    int _ = 1;
    // cin >> _;
    while(_ --) solve();
    return 0;
}

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

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

相关文章

【无头双向链表和链表练习题2】

文章目录 以给定值x为基准将链表分割成两部分&#xff0c;所有小于x的结点排在大于或等于x的结点之前输入两个链表&#xff0c;找出它们的第一个公共结点。给定一个链表&#xff0c;判断链表中是否有环无头双向链表的模拟实现ArrayList&#xff08;顺序表&#xff09;和LinkedL…

Netty I/O模型和线程模型

目录 1.概述 1.1 为什么使用Netty 1.2 Netty的优势 1.3 Netty的常见使用场景 2.Netty高性能的原因 2.1 I/O模型 2.1.1 阻塞IO 2.1.2 IO复用模型 2.2 线程模型 2.2.1 线程模型1&#xff1a;传统阻塞 I/O 服务模型 2.2.2 线程模型2&#xff1a;Reactor 模式 2.2.2.1 …

rdf-file:API

一&#xff1a;组件架构 intefaces模块&#xff1a;主要包含用户使用接口APItools模块&#xff1a;包含组件内核实现的文件操作工具codec模块&#xff1a;对文件结构&#xff0c;行数据&#xff0c;字段数据进行编码解码meta模块&#xff1a; 元数据配置以及加载loader/extensi…

中低压MOSFET 2N7002KW 60V 300mA 双N通道 SOT-323封装

2N7002KW小电流双N通道MOSFET&#xff0c;电压60V电流300mA&#xff0c;采用SOT-323封装形式。超高密度电池设计&#xff0c;适用于极低的ros (on)&#xff0c;具有导通电阻和最大直流电流能力&#xff0c;ESD保护。可应用于笔记本中的电源管理&#xff0c;电池供电系统等产品应…

CANdelaStudio 使用教程6 编辑DTC

文章目录 DTC的导入导出定义 19 服务的DTC编辑快照数据 DTC的导入导出 DTC导出的文件是 Excel 文件&#xff0c;可以先将这个池子的DTC导出去修改&#xff0c;再导入进来&#xff0c;完成DTC的修改 定义 19 服务的DTC 编辑快照数据

Java Thread 介绍

线程是操作系统调度的最小单元, 也叫轻量级进程。它被包含在进程之中, 是进程中的实际运作单位。 同一进程可以创建多个线程, 每个线程都有自己独立的一块内存空间, 并且能够访问共享的内存变量。 1 线程的分类 在 Java 中, 线程可以分为 2 种 守护线程: 守护线程是为用户线程…

使用Terraform创建Docker镜像和容器

为了实现自动化操作&#xff0c;Terraform需要明确指定所使用的提供者。因此&#xff0c;在主要的main.tf文件中&#xff0c;需要提供提供者的名称、源和版本信息。对于Docker&#xff0c;可以在main.tf中使用以下代码块。 1 Terraform配置模块 使用块和资源创建Terraform脚本…

nodejs+vue+elementui+express青少年编程课程在线考试系统

针对传统线下考试存在的老师阅卷工作量较大&#xff0c;统计成绩数据时间长等问题&#xff0c;实现一套高效、灵活、功能强大的管理系统是非常必要的。该系统可以迅速完成随机组卷&#xff0c;及时阅卷、统计考试成绩排名的效果。该考试系统要求&#xff1a;该系统将采用B/S结构…

C++类与对象(6)—初始化列表、explicit关键字、static成员

目录 一、初始化列表 1、定义 2、注意事项 3、尽量使用初始化列表初始化 4、初始化顺序 二、 explicit关键字 1、定义 2、特点 三、static成员 1、定义 2、特性 3、例题 一、初始化列表 下面这段代码可以正常编译&#xff1a; class A { private:int _a1;//成员…

innovus如何在floorplan view显示所有module

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如题&#xff0c;innovus的图形界面在floorplan view下默认只能显示instance数量超过100个的module&#xff0c;如果要显示更小的module&#xff0c;需要在VIEW-Set Perference…

LeetCode Hot100 394.字符串解码

题目&#xff1a; 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的…

东胜物流软件 SQL注入漏洞复现

0x01 产品简介 东胜物流软件是一款致力于为客户提供IT支撑的 SOP&#xff0c; 帮助客户大幅提高工作效率&#xff0c;降低各个环节潜在风险的物流软件。 0x02 漏洞概述 东胜物流软件 TCodeVoynoAdapter.aspx、/TruckMng/MsWlDriver/GetDataList、/MvcShipping/MsBaseInfo/Sav…

C语言——I /深入理解指针(二)

一、数组名的理解 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;⽽且 是数组⾸元素的地址&#xff0c;我们来做个测试。 #include <stdio.…

C++ :静态成员

静态成员 静态成员就是在成员变量和成员函数前加上关键字 static &#xff0c;称为静态成员 静态成员分为&#xff1a; 静态成员变量 1.所有对象共享同一份数据 2.在编译阶段分配内存 3.类内声明&#xff0c;类外初始化 静态成员函数 1.所有对象共享同一个函数 2.静态成…

计算机毕业设计springboot+vue高校田径运动会报名管理系统61s38

高校田径运动会管理采用java技术&#xff0c;基于springboot框架&#xff0c;mysql数据库进行开发&#xff0c;实现了首页、个人中心、运动员管理、裁判员管理、场地信息管理、项目类型管理、比赛项目管理、比赛报名管理、比赛成绩管理、通知公告管理、留言板管理、交流论坛、系…

1.ORB-SLAM3中如何保存多地图、关键帧、地图点到二进制文件中

1 保存多地图 1.1 为什么保存(视觉)地图 因为我们要去做导航&#xff0c;导航需要先验地图。因此需要保存地图供导航使用&#xff0c;下面来为大家讲解如何保存多地图。 1.2 保存多地图的主函数SaveAtlas /*** brief 保存地图* param type 保存类型*/ void System::SaveAtlas(…

Kubernetes基础入门:Kubernetes的有关概述

Kubernetes基础入门&#xff1a;Kubernetes的有关概述 一、摘要二、为什么需要 Kubernetes&#xff1f;三、Kubernetes 的功能架构 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、摘要 随着云计算和容器技术的快速发展&#xff0c;现代…

十分钟搭建VScode C/C++运行环境

一、下载配置vscode 1.下载安装VScode 地址&#xff1a;https://code.visualstudio.com/download 下载后&#xff0c;运行安装程序 (VSCodeUserSetup-{version}.exe)。这只需要一分钟。安装程序会将 Visual Studio Code 添加到环境变量中%&#xff0c;可以使用CMD键入“code”…

SQL FULL OUTER JOIN 关键字:左右表中所有记录的全连接解析

SQL RIGHT JOIN关键字 SQL RIGHT JOIN关键字返回右表&#xff08;table2&#xff09;中的所有记录以及左表&#xff08;table1&#xff09;中的匹配记录。如果没有匹配&#xff0c;则左侧的结果为0条记录。 RIGHT JOIN语法 SELECT column_name(s) FROM table1 RIGHT JOIN ta…

Javaweb之Vue组件库Element之Dialog对话框的详细解析

4.3.3 Dialog对话框 4.3.3.1 组件演示 Dialog: 在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。其企业开发应用场景示例如下图所示 首先我们需要在ElementUI官方找到Dialog组件&#xff0c;如下图所示&#xff1a; 然后复制如下代码到我们的组件文件的templ…