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 ...
随机推荐
- 线上ES集群参数配置引起的业务异常案例分析
作者:vivo 互联网数据库团队- Liu Huang 本文介绍了一次排查Elasticsearch node_concurrent_recoveries 引发的性能问题的过程. 一.故障描述 1.1 ...
- 如何在langchain中对大模型的输出进行格式化
简介 我们知道在大语言模型中, 不管模型的能力有多强大,他的输入和输出基本上都是文本格式的,文本格式的输入输出虽然对人来说非常的友好,但是如果我们想要进行一些结构化处理的话还是会有一点点的不方便. 不 ...
- 4. Shell 循环语句
重点: 条件测试. read. Shell 环境配置. case. for. find. xargs. gzip,bzip2,xz. tar. sed. 1)循环 1.1)循环执行介绍 将某代码段重复 ...
- 外包杯学习进度(一) | 【Android】【Javaweb】Android与JavaWeb服务器交互教程——搭建环境
前言 我们老师留了一个题目,这里就不写了,第一需要攻破的问题就是如何将app中的数据域javaweb进行传递,并可以回弹消息等问题.所以就开始了解一下这方面的信息. 资料积累 参考胡大炮的妖孽人生的博 ...
- 【Android】打卡app 今日完成情况记录
已完成内容:页面的设计.数据库的建立 今日目标:实现数据库的增删改查,并能够在页面实现输出 逻辑: 1.用户进入注册页面,进行注册,注册成功后,可以成功登录(这一阶段就完成了) 2.登录后,显示用户的 ...
- Android学习day01【搭建Android Studio】
是Google开发的操作系统 Android开发是移动应用开发的表现形式之一 还有很多的开发形式,就不一一列举了 完整项目精简的开发流程 开发工具 Android studio(强烈建议) Andro ...
- mac中删除本地maven库中下载失败的.lastUpdated文件
在 macOS 中,要删除本地 Maven 仓库中所有的 .lastUpdated 文件,您可以使用 find 命令结合 rm 命令来执行这个操作.这可以在终端(Terminal)中完成. 打开您的终 ...
- Excel做数据分析?是真的很强!
当涉及到数据分析时,Excel无疑是一个功能强大且广泛应用的工具.它提供了丰富的功能和灵活性,使得用户可以进行各种复杂的数据处理和分析.在本文中, 我将详细介绍Excel在数据分析领域的强大功能,包括 ...
- java中的try-with-resource语法
java的世界千奇百怪...当我甩出如下代码段,不知阁下如何应对? try(A a=new A()){ 和a变量无关的业务代码块 } 没错,这就是"臭名昭著"的try-with-r ...
- Tensorflow2.0实战之GAN
本文主要带领读者了解生成对抗神经网络(GAN),并使用提供的face数据集训练网络 GAN 入门 自 2014 年 Ian Goodfellow 的<生成对抗网络(Generative Adve ...