Codeforces Round 977 (Div. 2, based on COMPFEST 16 - Final Round) A-C1

news/2024/10/19 14:17:43


A. Meaning Mean
2024.10.17

算法:模拟,贪心

思路:
居然时没看题解直接做出来的T^T

贪心:题目要求最后剩下的一个数,使得最大

那么我们从这个最大的最后一个数思考,最后一个数肯定时由最后两个数进行相加,再除以2,同时上下取整而得到的。

方便陈述,我们设最大的最后一个数,也就是最终答案设为ans;

设最后进行运算的两个数为 x, y;

则有 ans = (x + y ) / 2;

我们想最后剩下的一个数最大,那么被除数越大好,即(x+y) 越大 ,ans越大

(x + y )中,设x为原数组当中的最后一个(也就是最大的数),

对于y而言,我们无法控制的就按前面元素的平均值来计算即可

C++代码

#include <bits/stdc++.h>
using namespace std;#define int long long
const int N = 60;int T,n,k;
int a[N];void solve() {cin >> n;for(int i = 1; i <= n; i++) {cin >> a[i];}sort(a+1,a+1+n);  //从小到大进行排序for(int i = 1; i < n-1; i++) {a[i+1] = (a[i] + a[i+1]) / 2;}cout << (a[n-1] + a[n]) / 2 << endl;
}
signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> T;while(T--) {solve();}return 0;
}

B. Maximize Mex
2024.10.17

算法:暴力枚举,排序

思路:
求最大的MEX

MEX需要连续的才行,如 0 ,1, 2 ,3,4 ,因此最后的答案一定是 小于等于 n

如果我们找到了连续区间中有空缺的部分, 这时我们就需要从小于空缺的数中找到多次出现的数字 ,将其加上 k 倍的 x。

对于由很多种情况,因此我们维护 的出现次数即可

C++代码

#include <bits/stdc++.h>
using namespace std;#define int long long
const int N = 2e5 + 10;int T,n,x;void solve(){cin >> n >> x;map<int,int>cnt;  //每个数出现次数map<int,int>add;  //每个数可以加的次数vector<int>a(n+1);for(int i = 1; i <= n; i++){cin >> a[i];cnt[a[i]] ++;} sort(a.begin()+1,a.end());//枚举 0 ~ n for(int i = 0; i <= n; i++){//如果当前数字出现次数大于1if(cnt[i] > 1) add[i % x] += cnt[i] - 1;if(!cnt[i] && add[i % x]) {cnt[i] ++;add[i % x] --;  }} for(int i = 0; i <= n; i++){if(!cnt[i]) {cout << i << endl;return;}}
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> T;while(T--){solve();}return 0;
} 

C1. Adjust The Presentation (Easy Version)
算法:暴力枚举

思路:
一开始想了队列,但后来发现根本没必要,想的太复杂了

a[]表示:演示幻灯片的顺序, b[]表示:准备当前幻灯片的成员编号

判断当前要演示的人和准备的人是否是同一个人

由题意我们可以知道,任何一个人只与它第一次出现的位置相关;

因为一个人在之前已经演示完了就可以插入到任何位置;

我们用一个数组vis[ ] 判断当前人出现的情况;

如果当前人是已经演示过了,则跳过;

如果当前人没演示过,但是当前人不是准备这部分幻灯片,那么就是不完美的了

C++代码

#include <bits/stdc++.h>
using namespace std;//#define int long long
const int N = 2e5 + 10;int T,n,m,q;void solve() {cin >> n >> m >> q;map<int,bool>vis;vector<int> a(n + 1);for(int i = 1; i <= n; i++) {cin >> a[i];}vector<int>b(m + 1);for(int i = 1; i <= m; i++) {cin >> b[i];}int j = 1;for(int i = 1; i <= m; i++) {if(vis[b[i]]) continue;   //如果是已经播放完的人则跳过if(a[j] == b[i]) vis[b[i]] = 1 , j++;else {cout << "TIDAK" << endl;return;}}cout << "YA" << endl;
}
signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> T;while(T--) {solve();}return 0;
}
​```

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

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

相关文章

航飞参数计算

作者:太一吾鱼水 宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 声明:博客写的比较乱,主要是自己看的。如果能对别人有帮助当然更好,不喜勿喷! 文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家…

第4课 SVN

1、svn的定义: svn是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式管理。 2.snv的作用: 在项目中对需求规格说明书,测试用例,代码,以及项目项目的文件进项管理和分享。 3、svn…

npm run的时候报错: this[kHandle] = new _Hash(algorithm, xofLen);

在前面加入以下配置信息 set NODE_OPTIONS=--openssl-legacy-provider && 后面跟原来的启动配置信息 凡哥,别他妈吹牛逼了

MiGPT让你的小爱音响更聪明hA

合集 - 经验分享(29)1.记一次由于操作失误致使数据库瘫痪的故障分析与解决方案2023-09-082.网络之谜:记一次失败排查的故事2023-11-153.你是否想知道如何应对高并发?Go语言为你提供了答案!2023-12-294.2023年终总结:拉帮结伙,拼搏探索新机遇2023-12-305.谁说后端不能画出美…

Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解

title: Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解 date: 2024/10/19 updated: 2024/10/19 author: cmdragon excerpt: app:templatesGenerated 是 Nuxt.js 的一个生命周期钩子,在模板编译到虚拟文件系统(Virtual File System, VFS)之后被调用。这个钩子允许…

链路与应用负载

为什么需要负载 如今越来越多的服务选择上云 加入到互联网 方便人们的使用 人们对服务的访问质量要求更高 对于高可靠性:电源: 往往采取双电源模式 当电源出现故障 网络不会陷入瘫痪线路: 有静态聚合 将多条线路逻辑变成一条线路 数据包会负载均衡的形式从多条逻辑成一条的链路…

HTTP客户端框架之UniHttp讲解

目录1 UniHttp1.1 简介1.1.1 前言1.1.2 简介1.2 简单使用1.2.1 引入依赖1.2.2 对接接口1.2.3 声明定义 HttpAPI 包扫描路径1.2.4 依赖注入使用即可1.3 说明介绍1.3.1 @HttpApi注解1.3.2 @HttpInterface注解1.3.3 @Par注解1.3.3.1 @QueryPar注解1.3.3.2 @PathPar注解1.3.3.3 @He…