【Codeforces Global Round 18】【题解A-C】

本文探讨了三道编程竞赛题目,涉及数组处理和优化策略。第一题讨论了通过移动方块减少建筑物高度差的问题,揭示答案总是小于等于1,并提供了一种判断何时答案为0的方法。第二题涉及在有限操作下使数组按位AND非零,通过计算最大子序列的按位AND非零,找到所需删除的最小元素数。最后一题是关于光明节烛台的,需要通过操作使蜡烛的点亮模式匹配目标模式,分析了偶数和奇数操作的情况。通过这些策略,参赛者可以在编程竞赛中更好地解决问题。

2021-12-25

A.Closing The Gap

题目

一排有 n 个方块塔,其中塔 i 的高度为 a i a_i ai。你是建筑团队的一员,你想让建筑看起来尽可能漂亮。在一天之内,您可以执行以下操作:

选择两个索引 i 和 j (1≤i,j≤n; i≠j),将一个方块从塔 i 移动到塔 j。这实质上是将 a i a_i ai 减少了 1,而将 a j a_j aj 增加了 1。
你认为建筑物的丑陋是最高和最短建筑物之间的高度差。形式上,丑陋被定义为 max(a)−min(a)

在任意天数之后,您可以达到的最小可能丑度是多少?

输入
第一行包含一个整数 t (1≤t≤1000)——测试用例的数量。然后是 t 个案例。

每个测试用例的第一行包含一个整数 n (2≤n≤100)——建筑物的数量。

每个测试用例的第二行包含 n 个空格分隔的整数 a 1 , a 2 , … , a n ( 1 ≤ a i ≤ 1 0 7 ) a_1,a_2,…,a_n (1≤a_i≤10^7) a1,a2,,an(1ai107)——建筑物的高度。

输出
对于每个测试用例,输出一个整数——建筑物的最小可能丑陋程度。

题解:

如果 max(a)−min(a) 严格大于 1,您可以分别对 max 和 min 应用操作,这使它们彼此更接近。 换句话说,它要么减小 max(a)−min(a) 要么保持不变。 这意味着答案总是≤1。 现在剩下的就是确定答案是 0 还是 1。如果数组的总和可以被 n 整除,那么答案只能是 0,因为数组的总和在一次运算之后不能改变,并且如果它不能被 n 整除 n 你不能让每个元素都相等。 这意味着如果总和可被 n 整除,则答案为 0,否则为 1。

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;

const int maxn=1e6+5;
void solve(){
   
   
    int n;
    cin >> n;
    int a[1000] = {
   
   0};
    int sum = 0;
    int maxx = 0;
    for (int i = 0; i < n;i++){
   
   
        cin >> a[i
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eternity_GQM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值