School training competition ( Second )

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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解混合整数二次规划 (MIQP) 投资组合优化问题--附Matlab和Python实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

新手用什么工具制作电子画册?新分享

随着数字化时代的到来&#xff0c;电子画册已成为企业宣传、展示产品的重要手段。对于新手来说&#xff0c;选择一款合适的工具是关键。今天&#xff0c;为大家推荐一款适合新手制作的电子画册工具&#xff0c;让你轻松制作出精美画册。 工具推荐&#xff1a;FLBOOK在线制作电子…

快速开发出一个公司网站

问题描述&#xff1a;参加一个创业活动&#xff0c;小组要求做一个公司网站&#xff0c;简单介绍一下自己公司的业务。需要快速完成。 问题解决&#xff1a;从网上找一个网站模板&#xff0c;类似于做PPT&#xff0c;搭建一个网站即可。 这里推荐的是京美建站、wordpress、he…

【JAVA学习笔记】72 - 满汉楼 - 餐饮管理系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26 一、需求说明 满汉楼项目功能多&#xff0c;界面复杂&#xff0c;涉及到复杂的awt和swing技术和事件编程&#xff0c;做如下调整: 1.去掉界面和事件处理(工作中使用很少)&#xff0c;使…

7000字+24张图带你彻底弄懂线程池

大家好&#xff0c;我是三友。今天跟大家聊一聊无论是在工作中常用还是在面试中常问的线程池&#xff0c;通过画图的方式来彻底弄懂线程池的工作原理&#xff0c;以及在实际项目中该如何自定义适合业务的线程池。 一、什么是线程池 线程池其实是一种池化的技术的实现&#xff0…

python-爬虫(可直接使用)

爬虫&#xff08;Web Scraping&#xff09;是指通过编程自动化地获取互联网上的信息的过程。爬虫的目的通常是从网页中抓取数据&#xff0c;进行数据分析、处理或展示。以下是爬虫的基本流程和一些重要的概念&#xff1a; 爬虫基本流程&#xff1a; 确定目标&#xff1a; 确定要…

Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)

Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御&#xff1a;综述》 图对抗攻击论文数据库&#xff1a; https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络&#xff08;DNN&#xff09;已广泛应…

图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC控制器Controllers

Asp.net web应用程序MVC之Controllers控制器 Controller在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并且负责协调Model与View之间的数据传递,是ASP.NET MVC的核心。 撰写Controller的基本要求: 1、Controller必须为公开类别; 2、Controller名称必须以Controller结…

初识前后端数据交互(新手篇)

一个软件项目的开发必然是离不开前端和后端的协作&#xff0c;对于刚入行的新手前端或者新手后端来说&#xff0c;很有必要了解一下对方是在做什么&#xff0c;以及提供给自己什么样的帮助&#xff0c;为什么需要对方共同协作才能完成整个软件项目的开发呢&#xff1f;希望这篇…

14.1 USA.gov Data from Bitly(USA.gov数据集)

CHAPTER 14 Data Analysis Examples&#xff08;数据分析实例&#xff09; 14.1 USA.gov Data from Bitly&#xff08;USA.gov数据集&#xff09; 2011年&#xff0c;短链接服务&#xff08;URL shortening service&#xff09;商Bitly和美国政府网站USA.gov合作&#xff0c;…

【springboot】宝塔简单部署springboot 配置https

宝塔简单部署springboot配置https 需求步骤1. springboot通过maven组件打成jar包2. 将jar包部署到宝塔上3. 下载安装nginx并创建网站节点4. 设置域名或者IP5. 设置反向代理:代理后端服务的ip和端口7. 配置SSL/TLS 需求 宝塔部署springboot项目,用nginx反向代理后端IP端口&…

深入理解OS--数值编码

信息的表示和处理 寻址和字节顺序 位于0x100处&#xff0c;int类型值0x01234567在大端和小端下的存储。 字符串的存储不受字节序影响。 移位 1.对左移&#xff0c;右边统一补0 2.对右移&#xff0c;分为算术右移&#xff0c;逻辑右移 算术右移下&#xff0c;左边补原最高有效…

VS2022 配置Qt编译环境 | winows安装Qt5.14.2 | VS2017和Qt5配置成功指南

Visual Studio 2022安装教程完文本内容较多,请耐心看完,挺有收获的,要自己多尝试哦。 文章目录 # 插件安装 如果你想用VS2022来创建QT项目,那么你首先要学会下面的操作,创建一个空白解决方案,在扩展搜索qt,并且下载两个插件(带有绿√的就是)。这里其实是一个坑:VS20…

万宾科技第四代可燃气体监测仪的作用

燃气作为一种重要的能源已在居民生活、工业生产和商业活动等领域得到了广泛的应用。但是与之而来的便是各种各样的燃气管网的安全问题&#xff0c;其中燃气管网泄漏成为了城市生命线建设中亟待解决的安全隐患。因此采取切实有效的措施来保障燃气管网的安全运行&#xff0c;应用…

NB-IoT BC260Y Open CPU SDK④开发环境搭建

NB-IoT BC260Y Open CPU SDK④开发环境搭建 1、SDK包的介绍2、编程工具3、程序框架1、SDK包的介绍 (1)、SDK包的下载: 链接: (2)、文件目录介绍 文件名描述device启动文件、底层配置文档等doc存放 QuecOpen 项目相关的说明文档osFreeRTOS 相关代码out输出编译 App 和调…

【Python】遍历电脑中的所有文件

通过os模块中的os.walk()遍历电脑指定路径的所有文件及大小&#xff1a; import osdef traverse_files(path):file_path_list[]file_size_list[]for root, dirs, files in os.walk(path):for file in files:file_path os.path.join(root, file)file_path_list.append(file_pa…

最新版小权云黑系统 骗子添加查询源码

小权云黑系统添加骗子&#xff0c;查询骗子&#xff0c;可添加团队后台方便审核用&#xff0c;在线反馈留言系统&#xff0c;前台提交骗子&#xff0c;后台需要审核才能过&#xff0c;后台使用光年UI界面&#xff0c;新增导航列表&#xff0c;可给网站添加导航友链&#xff0c;…

爬虫系统Docker和Kubernetes部署运维最佳实践

在构建和管理爬虫系统时&#xff0c;使用Docker和Kubernetes可以带来诸多好处&#xff0c;如方便的部署、弹性伸缩和高可靠性。然而&#xff0c;正确的部署和运维实践对于确保系统稳定运行至关重要。在本文中&#xff0c;我将分享爬虫系统在Docker和Kubernetes上的最佳部署和运…

2020年09月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下面程序,输入4和7后,角色说出的内容是? A:4,7 B:7,7 C:7,4 D:4,4 答案:B 第2题 执行下面程序,输出是? A:大学 中庸 孟子 论语 B:论语 大学 孟子 中庸 C:大…