Codeforces Round #618 (Div. 2) A~E
原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处。
1300A. Non-zero
题意:给你一个数组,每次操作你可以使其中任意元素的值+1,问最少操作几次使得元素和、元素积都不为0
思路:因为积不为0,所以凡是值为0的元素我们都要将它+1,加完后若总和不为0,则操作结束,否则对任意元素 \(+1\) 即可
【AC Code】
const int N = 2e5 + 10;
int a[N];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
int sum = 0, t = 0;
for (int i = 1; i <= n; ++i) {
cin >> a[i], sum += a[i];
if (!a[i]) t += 1;
}
sum += t;
if (sum == 0) cout << t + 1 << "\n";
else cout << t << "\n";
}
}
1300B. Assigning to Classes
题意:有2n个学生,每个学生都有自己的价值a[i],现你要将他们分配到两个班,使两个班学生价值的中位数相差尽可能小
思路:
先按照价值对学生排个序,因为每个人都必须被分配,所以很显然我们能控制差值离得最近的就是中间那两人
所以答案就是 \(a[n + 1] - a[n]\)
【AC Code】
const int N = 2e5 + 10;
int a[N];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
int n; cin >> n;
for (int i = 1; i <= 2 * n; ++i) cin >> a[i];
sort(a + 1, a + 1 + 2 * n);
cout << a[n + 1] - a[n] << "\n";
}
}
1300C. Anu Has a Function
题意:定义 \(f(x , y) = x | y - y\),给你一个数组,
你可以对它任意排序 问如何排序才能使 \(f ( f ( f ( f ( a[1] , a[2] ) , a[3] ) , a[4] ) , a[5])...\) 的值最大
思路:赛时没写出来
我们把 \(a|b-b\) 换成 \(a-a\&b\) ,也就是说使得 \(a\&b\) 最小,那我们考虑什么时候最大,
即所有数的最高位,只有一个为 \(1\) 不然一定在运算的过程中被削去,那么这个题就可以改成,在 \(32\) 位中找某一位只有一个数是 \(1\) 的那一个数,让他当第一。因为其余都会抵消。如果不存在,那么怎样输出都是 \(0\)
【AC Code】
const int N = 1e5 + 10;
int a[N];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int n; cin >> n;
for (int i = 1; i <= n; ++i) cin >> a[i];
for (int j = 30; ~j; j -= 1) {
int cnt = 0, p;
for (int i = 1; i <= n; ++i)
if ((a[i] >> j) & 1) ++cnt, p = i;
if (cnt == 1) {
cout << a[p] << " ";
for (int k = 1; k <= n; ++k)
if (k != p) cout << a[k] << " ";
return 0;
}
}
cout << "\n";
for (int i = 1; i <= n; ++i) cout << a[i] << " ";
}
1300D. Aerodynamic
题意:给你一个多边形,你可以对它进行瞎操作,问你瞎操作后的多边形和原来的多边形是否相似
思路:结论很好猜,只要多边形满足中心对称就为相似(应该多数人都能猜到这个结论吧?),所以接下来只要判断多边形是否为中心对称就可以了
【AC Code】
using pii = pair<int, int>;
const int N = 2e5 + 10;
pii a[N];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int n; cin >> n;
pii ans, now;
for (int i = 1; i <= n; ++i) cin >> a[i].first >> a[i].second, a[i].first <<= 1, a[i].second <<= 1;
if (n & 1) return printf("NO"), 0;
ans = {(a[1].first + a[1 + n / 2].first) >> 1, (a[1].second + a[1 + n / 2].second) >> 1};
for (int i = 1; i <= n / 2; ++i) {
now = {a[i].first + a[i + n / 2].first >> 1, a[i].second + a[i + n / 2].second >> 1};
if (now != ans) return printf("NO"), 0;
}
cout << "YES";
}
1300E. Water Balance
题意:给你一个序列,你可以选择任意区间使这个区间内每个数的值变为区间内元素的平均值,要求你输出可以形成的字典序最小的序列
思路:赛时没写出来
这道题其实可以这样做,我们先把第 \(i\) 个数归类到第 \([i , i]\) 个区间,并令第 \(i\) 个区间的平均值为 \(a[i]\) ,然后从第二个区间开始比较当前区间和前一个区间的平均值。
若当前区间的平均值小于上一个区间的平均值,则我们对上一个区间更新平均值,然后用上一个区间再对上上个区间更新。
若当前区间的平均值大于等于上一个区间的平均值,则停止更新。
因为最坏情况每个区间都要从后往前更新所有区间,而答案又满足单调性,所以我们可以用单调栈维护区间左端点右端点优化一下复杂度。
【AC Code】
const int N = 1e6 + 10;
struct node {
double ave;
int l, r;
} q[N];
double ans[N], a[N];
int main() {
// ios::sync_with_stdio(false), cin.tie(nullptr);
int n, top;
cin >> n;
for (int i = 1 ; i <= n ; i ++) cin >> a[i];
q[++ top] = {a[1], 1, 1};
for (int i = 2 ; i <= n ; i ++) {
q[++ top] = {a[i], i, i};
while (top > 1 && q[top].ave < q[top - 1].ave) {
int l = q[top].l, r = q[top].r, pl = q[top - 1].l, pr = q[top - 1].r;
q[top - 1].ave = (q[top].ave * (r - l + 1) + q[top - 1].ave * (pr - pl + 1)) / (r - pl + 1);
q[top - 1].r = r;
top -- ;
}
}
for (int i = 1 ; i <= top ; i ++)
for (int j = q[i].l ; j <= q[i].r ; j ++)
ans[j] = q[i].ave;
for (int i = 1 ; i <= n ; i ++) printf("%.12lf\n", ans[i]);
cout << '\n';
}
Codeforces Round #618 (Div. 2) A~E的更多相关文章
- Codeforces Round #618 (Div. 2)
题库链接 https://codeforces.ml/contest/1300 A. Non-zero 一个数组,每次操作可以给某个数加1,让这个数组的积和和不为0的最小操作数 显然如果有0的话,必须 ...
- Codeforces Round #618 (Div. 1)C(贪心)
把所有数看作N块,后面的块比前面的块小的话就合并,这个过程可能会有很多次,因为后面合并后会把前面的块均摊地更小,可能会影响更前面地块,像是多米诺骨牌效应,从后向前推 #define HAVE_STRU ...
- Codeforces Round #618 (Div. 1)B(几何,观察规律)
观察猜测这个图形是中心对称图形是则YES,否则NO #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace ...
- Codeforces Round #618 (Div. 1)A(观察规律)
实际上函数值为x&(-y) 答案仅和第一个数字放谁有关 #define HAVE_STRUCT_TIMESPEC #include <bits/stdc++.h> using na ...
- Codeforces Round #618 (Div. 2)A. Non-zero
Guy-Manuel and Thomas have an array aa of nn integers [a1,a2,…,an ]. In one step they can add 11 to ...
- Codeforces Round #618 (Div. 2)C. Anu Has a Function
Anu has created her own function ff : f(x,y)=(x|y)−y where || denotes the bitwise OR operation. For ...
- Codeforces Round #618 (Div. 2) 小号上紫之路
这一场涨了不少,题也比较偏思维,正好适合我 A. Non-zero 我们记录这些数字的总和sum,并且记录0的个数zero,显然答案应该是这些0的个数,注意如果sum+zero==0的话答案要额外加一 ...
- [CF百场计划]#2 Codeforces Round #618 (Div. 2)
A. Non-zero Description: Guy-Manuel and Thomas have an array \(a\) of \(n\) integers [\(a_1, a_2, \d ...
- Codeforces Round #618 (Div. 2)-B. Assigning to Classes
Reminder: the median of the array [a1,a2,-,a2k+1] of odd number of elements is defined as follows: l ...
- Codeforces Round #618 (Div. 2)-Non-zero
Guy-Manuel and Thomas have an array a of n integers [a1,a2,-,an]. In one step they can add 1 to any ...
随机推荐
- 如何配置CentOS 7网络
不久之前在配置CentOS 7网络,记录一下操作过程. CentOS 7,你可以按照以下步骤配置网络: 打开终端,输入命令查看本台服务器的IP信息. ip a 输入命令查看网关. ip r 输入命令查 ...
- Vue01-简介与入门
Vue 01. 简介 1.1 前端三大框架 目前前端最流行的三大框架: Vue React angular 1.2 Vue简介 Vue (读音 /vjuː/,类似于 view) ,也可以写成Vue.j ...
- Taro:高性能小程序的最佳实践
前言 作为一个开放式的跨端跨框架解决方案,Taro 在大量的小程序和 H5 应用中得到了广泛应用.我们经常收到开发者的反馈,例如"渲染速度较慢"."滑动不够流畅" ...
- 【scikit-learn基础】--『数据加载』之外部数据集
这是scikit-learn数据加载系列的最后一篇,本篇介绍如何加载外部的数据集. 外部数据集不像之前介绍的几种类型的数据集那样,针对每种数据提供对应的接口,每个接口加载的数据都是固定的.而外部数据集 ...
- MySQL运维9-Mycat分库分表之枚举分片
一.枚举分片 通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务 二.枚举分片案例 枚举分片需求:现有 tb_en ...
- 前端 JS 安全对抗原理与实践
作者:vivo 互联网安全团队- Luo Bingsong 前端代码都是公开的,为了提高代码的破解成本.保证JS代码里的一些重要逻辑不被居心叵测的人利用,需要使用一些加密和混淆的防护手段. 一.概念解 ...
- 组合式api-通过reactive和ref提供响应式数据
在setup中如果是直接定义遍历数据并不是响应式数据,和vue2中的data选项提供的数据不一样,vue2的data中返回的数据全部都是响应式数据. <script setup> // 这 ...
- 【笔记整理】使用Session会话保持
import requests if __name__ == '__main__': # Session对象实现了客户端和服务器端的每次会话保持功能. session = requests.Sessi ...
- Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)
对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行.G ...
- 构建 dotnet&vue 应用镜像->推送到 Nexus 仓库->部署为 k8s 服务实践
前言 前面分享了 k8s 的部署安装,本篇来点实操,将会把一个 .net core + vue 的项目(zhontai),打包构建成 docker 镜像,推送到 nexus 镜像仓库,并部署到 k8s ...