Codeforces Round 560 (Div 3)

news2025/1/12 3:54:42

Codeforces Round 560 (Div. 3)

Dashboard - Codeforces Round 560 (Div. 3) - Codeforces

A. Remainder(模拟)

在这里插入图片描述

思路:模拟取余操作 , 只需考虑数字的后 x 位变成要变成的数字即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;

int n , x , y;
int a[N] , res;

signed main(){

	cin >> n >> x >> y;
	for(int i = 1 ; i <= n ; i ++) scanf("%01d" , &a[i]);
	reverse(a + 1 , a + 1 + n);
	y += 1;
	for(int i = 1 ; i <= x ; i ++){
		if(i == y){
			if(a[i] == 0) res += 1;
		}else{
			if(a[i] == 1) res += 1;
		}
	}
	cout << res;

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

B. Polycarp Training(排序)

在这里插入图片描述

思路:对比赛按照从小到大排序 , 贪心的去训练。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;

int n , a[N];

signed main(){

	cin >> n;
	for(int i = 1 ; i <= n ; i ++) cin >> a[i];
	sort(a + 1 , a + 1 + n);
	int now = 0;
	for(int i = 1 ; i <= n ; i ++){
		if(a[i] >= (now + 1)) now += 1;
	}
	cout << now;

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

C. Good String(模拟)

在这里插入图片描述

思路:手模了一下 ,没什么性质 , 直接模拟即可 , 这里我每个字符串去匹配下一个与其不同的字符串 , 加到答案中即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;

/*
ooa
*/

int n , cnt;
string s , ans;

signed main(){

	cin >> n >> s;
	s = '~' + s;
	
	int now = 0;
	for(int i = 1 ; i <= n ; i = now + 1){
		ans += s[i];
		cnt += 1;
		bool tag = 0;
		for(int j = i + 1 ; j <= n ; j ++){
			if(s[j] != s[i]){
				tag = 1;
				now = j;
				break;
			}
		}
		if(!tag) break;
		ans += s[now];
		cnt += 1;
	}
	
	if(cnt & 1) cnt -= 1;
	cout << n - cnt << "\n";
	for(int i = 0 ; i < cnt ; i ++) cout << ans[i];
	cout << "\n"; 

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

D. Almost All Divisors(思维 + 数论)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

思路:首先想到的就是分奇偶 , 奇数会比偶数多一个平方因子 , 然后把所有因子排序后 , 要判断对应位置相乘是否都相等。还有一个坑点 , 就是要求这 n 个数要是(所有因子) , 因此如果满足上面条件 , 还要额外检查因子是否全 , 因为即使因子不全也满足对应位置相乘都相等。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;

/*
12
1 2 3 4 6 12
*/

int n , t , a[N];
map<int,int>all;

bool judge(){
	map<int,int>mp;
	if(n & 1){
		for(int i = 1 ; i <= n / 2 + 1 ; i ++){
			mp[a[i] * a[n + 1 - i]] += 1;
		}
	}else{
		for(int i = 1 ; i <= n / 2 ; i ++){
			mp[a[i] * a[n + 1 - i]] += 1;
		}
	}
	return mp.size() == 1;
}

bool judge1(int x){
	
	for(int i = 2 ; i * i <= x ; i ++){
		if(x % i == 0){
			if(!all[i]) return 0;
			if(!all[x / i]) return 0;
		}
	}
	return 1;
}

signed main(){

	IOS
	cin >> t;
	
	while(t --){
		
		cin >> n;
		all.clear();
		for(int i = 1 ; i <= n ; i ++) cin >> a[i] , all[a[i]] += 1;
		sort(a + 1 , a + 1 + n);
		
		//第一次判断
		if(!judge()){
			cout << "-1\n";
		}else{
			int now = 0;
			if(n & 1){
				now = a[(n + 1) / 2];
				now = now * now; 
			}else{
				now = a[1] * a[n];
			}
			//第二次判断
			if(judge1(now)){
				cout << now << "\n";
			}else{
				cout << "-1\n";
			}			
		}
	}

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

E. Two Arrays and Sum of Functions(思维 + 排序)

在这里插入图片描述

思路:很经典的一道题 , 首先我们考虑每个位置 i 被覆盖的次数应该是 cnt[i] = i * (n + 1 - i); 就是左边可选的端点数乘右边的端点数。

这样我们可以把答案表示成下面这个形式。

a n s = ∑ 1 n c n t [ i ] ∗ a [ i ] ∗ b [ i ] ans=\sum_{1}^{n}cnt[i] *a[i]*b[i] ans=1ncnt[i]a[i]b[i]

现在 cnt[i] 与 a[i] 已知 , 要重排b数组最小化 ans ,只要贪心的让大的数去配对小的数就好了。

注意会有一些小的实现细节。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 998244353;
typedef pair<int,int>PII;

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

signed main(){

	IOS
	cin >> n;
	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 ++) cnt[i] = i * (n - i + 1);
	for(int i = 1 ; i <= n ; i ++) a[i] = a[i] * cnt[i];
	sort(a + 1 , a + 1 + n ,
		[&](int a , int b){
			return a > b;
		}
	);
	sort(b + 1 , b + 1 + n ,
		[&](int a , int b){
			return a < b;
		}
	);
	
	for(int i = 1 ; i <= n ; i ++){
		res = (res + a[i] % mod * b[i] % mod) % mod;
	}
	
	cout << res ;

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

F. Microtransactions(二分 + 贪心)

在这里插入图片描述

思路:显然时间是满足二分性的 , 考虑去二分答案 。 那么如何二分答案呢 , 我们可以观察到一个商品是可以有很多个打折时间的 , 那么我们在二分答案的时候选择哪一个打折时间去购买呢 ? 这里我们要用到贪心的思想 ,对于一个商品的多个打折时间 , 我们选择满足条件的最靠后的打折时间去购买 , 这样能最大化的利用资源。

注意细节即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;

int n , m;
int cnt[N] , sum , cnt_1[N];
map<int , vector<int>>mp;//某个商品的所有打折时间
map<int , vector<int>>ed;//某个时间可以处理的商品

bool judge(int t){
	
	//处理每个商品的最晚打折时间
	ed.clear();
	for(auto [x , y] : mp){
		int res = 0;
		for(auto v : y) if(v <= t) res = max(res , v);
		ed[res].push_back(x);
	}
	
	for(int i = 1 ; i <= n ; i ++) cnt_1[i] = cnt[i]; 
	
	int need = 0;
	
	for(auto [x , y] : ed){
		int now = (x - need);//当前时刻的可用资源
		for(auto v : y){
			if(cnt_1[v] <= now){
				now -= cnt_1[v];
				need += cnt_1[v];
				cnt_1[v] = 0;
			}else{
				cnt_1[v] -= now;
				need += now;
				break;
			}
		}
	}
	//未打折使用的资源
	for(int i = 1 ; i <= n ; i ++) need += cnt_1[i] * 2;
	
	return need <= t;
}

signed main(){

	IOS
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i ++) cin >> cnt[i];
	for(int i = 1 ; i <= m ; i ++){
		int x , y;
		cin >> x >> y;
		mp[y].push_back(x);
	}
	
	int l = 0 , r = 4e5;

	while(l < r){
		int mid = (l + r) >> 1;
		if(judge(mid)) r = mid;
		else l = mid + 1;
	}

	cout << l << "\n";

	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

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

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

相关文章

java的一个catch语句捕获多个异常

说明 在java的异常处理中&#xff0c;如果几个异常的处理完全相同&#xff0c;那么可以考虑在一个catch语句中捕获。但要注意&#xff0c;用一个catch捕获的几个异常类中&#xff0c;一个类不能是另外一个的子类&#xff0c;否则会编译报错。因为如果有父子关系&#xff0c;那…

“Fatal error compiling: 无效的目标发行版: 11“的解决

"Fatal error compiling: 无效的目标发行版: 11"的解决 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project xxxxx: Fatal error compiling: 无效的目标发行版: 11 -> [Help 1] PS D:\…

第三方软件测试公司如何选择?2023国内软件测试机构排名

软件检测公司 随着互联网技术的快速发展&#xff0c;应用软件也如春笋般越来越多&#xff0c;软件测试成为了软件企业离不开的话题。但软件企业的精力大多投入在软件开发上&#xff0c;因此要想更好更高效的完成软件测试&#xff0c;企业一般会将软件测试交付给外包公司完成。…

基于改进人工蜂群算法的 K 均值聚类算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ModaHub魔搭社区专访百度智能云李莅:什么样的企业适合什么类型的向量数据库?

ModaHub魔搭社区:向量数据库会像传统数据库一样面临着选型问题吗?您能介绍下,什么样的企业适合什么类型的向量数据库吗?是单机版的还是插件版的,还是企业级的? 李莅的观点非常明确,他认为在选型的时候,首先要考虑的是需求。如果业务量级不是特别大,而且有成本方面的考…

背书方法--记忆宫殿

项目进度管理的工具 记忆宫殿或场景法&#xff1a;果树抽水&#xff08;流程是&#xff1a;果树的果子&#xff0c;水池的水&#xff0c;抽水机的水&#xff09;&#xff1a;想象一下你家附近有个巨大的果树&#xff0c;人们为了保护它&#xff0c;修建了个池子&#xff0c;昨…

IDEA中的“Deployment“ 将项目直接部署到服务器上

ntelliJ IDEA中的"Deployment"工具栏是一个方便的工具&#xff0c;用于将你的项目直接部署到服务器上。这个工具栏提供了三种部署的方式&#xff1a; 1.Web Server在本地电脑上&#xff0c;并且服务器运行目录也在项目目录下。 2.Web Server在本地电脑上&#xff0c;…

JWT一篇通

JWT 是什么&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种开放的标准&#xff0c;标准的编号是RFC7591。用于在不同实体之间安全地传输信息。它是基于 JSON 编码的令牌。 JWT 的组成 JWT由三个部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷…

从C++98到C++26,经历了什么?

作为一名程序员&#xff0c;2023年最应该关注的话题就是C的标准更新。 C标准遵循3年开发周期&#xff0c;并以发布年份命名。C在临发布的一年前会进入“功能冻结期&#xff08;feature freeze&#xff09;”&#xff0c;即版本开发进入半稳定状态&#xff0c;不再添加重大功能及…

【C语言】入门——指针

目录 ​编辑 1.指针是什么 2.指针类型和指针运算 2.1指针-整数 2.2指针-指针 2.3指针的关系运算 3.野指针 3.1野指针成因 &#x1f44d;指针未初始化&#xff1a; &#x1f44d;指针越界访问&#xff1a; &#x1f44d;指针指向空间释放&#xff1a; 3.2如何规避野指针 …

PDF转Word的方法分享与注意事项。

PDF和Word是两种常用的文档格式&#xff0c;它们各有优点&#xff0c;适用于不同的场景。然而&#xff0c;有时候我们需要将PDF转换为Word&#xff0c;以便更好地进行编辑和排版。本文将介绍几种常用的PDF转Word的方法&#xff0c;并分享一些注意事项。 一、PDF转Word的方法 使…

性能炸裂c++20协程+iocp/epoll,超轻量高性能异步库开发实战

前言&#xff1a; c20出来有一段时间了。其中一大功能就是终于支持协程了&#xff08;c作为行业大哥大级别的语言&#xff0c;居然到C20才开始支持协程&#xff0c;我也是无力吐槽了&#xff0c;让多少人等了多少年&#xff0c;等了多少青春&#xff09;但千呼万唤他终于还是来…

python图书书籍管理系统及推荐评分系统vue

本系统提供给管理员对书籍分类、书籍信息、书籍评分、留言板等诸多功能进行管理。本系统对于用户输入的任何信息都进行了一定的验证&#xff0c;为管理员操作提高了效率&#xff0c;也使其数据安全性得到了保障。随着信息化时代的到来&#xff0c;网络系统都趋向于智能化、系统…

拿下数千万元A轮融资,这家HUD厂商驶入规模上车的“快车道”

进入2023年&#xff0c;AR HUD市场迎来了爆发式增长&#xff0c;一批本土HUD厂商开始备受资本市场的关注。 近日&#xff0c;深圳前海智云谷科技有限公司&#xff08;以下简称“智云谷”&#xff09;完成数千万元A轮融资&#xff0c;本轮融资由清新资本等投资方投资。智云谷表…

你以为的直线,在多维空间里是复杂的曲线

你以为的直线&#xff0c;在多维空间里是复杂的曲线 AI回答&#xff1a; 这句话是说&#xff0c;在多维空间中&#xff0c;我们的直觉和经验可能会误导我们&#xff0c;认为一条直线应该是简单直接的。然而&#xff0c;在高维空间中&#xff0c;直线可能会有很多突变和弯曲&am…

ES6中let和const关键字与var关键字之间的区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量作用域&#xff08;Scope&#xff09;&#xff1a;⭐ 变量提升&#xff08;Hoisting&#xff09;&#xff1a;⭐ 重复声明&#xff1a;⭐ 初始化&#xff1a;⭐ 全局对象属性&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#…

41.SpringMVC实现下载和上传功能

SpringMVC实现下载和上传功能 下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文 index.html <a th:href"{/testDown}">下载图片</a>使用ResponseEntity实现下载文件的功能FileUpAndDownCon…

MCS-51单片机温度控制系统的设计

一、项目介绍 注塑机是一种常用的制造设备&#xff0c;用于生产塑料制品。在注塑机的工作过程中&#xff0c;溶胶必须达到一定的温度才能被注入模具中进行成型。因此&#xff0c;在注塑机的生产过程中&#xff0c;温度控制是非常重要的一环。 本项目基于MCS-51单片机设计了一…

关于TE,PU邀请函

有人问我说客户让办理TE邀请函&#xff0c;具体步骤是哪些&#xff1f;我目前还没遇到过客户要求办理TE邀请函的&#xff0c;基本上都是普通的商务签证&#xff0c;只要写个邀请函给客户&#xff0c;剩下的事情客户就能自己搞定&#xff0c;他们来访的目的简单&#xff0c;要么…

虹科方案|HK-Edgility利用边缘计算和VNF降本增效

一、边缘计算和 VNF 在当今瞬息万变的数字环境中&#xff0c;边缘虚拟化网络功能&#xff08;VNF&#xff09;是一个既能够优化网络基础设施&#xff0c;又能控制成本的创新型解决方案。它使客户能够将多个基于软件的 VNF 整合到一个专用计算设备上。更值得高兴的是&#xff0c…