【Codeforces】 Laboratory Work

这篇博客探讨了Codeforces Round #468中的一道题目,要求对一组实验数据进行变换,保持平均值不变且上下边界不超过原始数据,同时减少相同值的数量。作者提出,仅当数据中有三个不同数值时,才有可能通过特定的两种变换(a+c->2b或2b->a+c)来达到目标,并需统计哪种变换能减少更多的相同数。
摘要由CSDN通过智能技术生成

题目大概意思就是:给出一组实验数据(变换前的数据每个之间最大相差为2),要求对这组实验数据进行变换,变换要符合三个要求:

1.变换后的新数据的平均值和原数据一样。

2.变换后得到的新数据的上下边界不能超过原来的实验数据 。

3.两组实验数据相同的值要最少。

思路:

变换后得到的新数据的平均值一样和最大相差为二可以知道只存在两种变换:

设a,b,c存在a=b+1,b=c+1关系

一、a+c变换为2b

二、2b变换为a+c

然后就要统计两种变换可以减少的相同数为多少,取减少相同数最多的变换来进行。

最后特别要注意的就是进来的这两组数据一定要是有三个不同的数字,如果只有两个不同的数字或者一个是不可能通过变换来降低相同值的。

题目来源;Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round). C题

http://codeforces.com/problemset/problem/931/C


import java.util.Arrays;
import java.util.Scanner;
public class Main{
    static Scanner input = new Scanner(System.in);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值