https://acm.ecnu.edu.cn/contest/92/problem/D/

D. 数蝌蚪

Time limit per test: 2.0 seconds

Memory limit: 256 megabytes

有 n 个装着小蝌蚪的水缸排成一排,你拥有一个无限蝌蚪的袋子,可以往一个水缸里放入一只蝌蚪,也可以取出一只蝌蚪,求最少的操作数,使得每个水缸的蝌蚪数量形成一个公差为 k 等差数列。

Input

第一行一个数 n,k(3⩽n⩽3×105,0⩽k⩽104)。
第二行 n 个数,表示每个水缸里的蝌蚪数目(0⩽ai⩽104)。

Output

输出最少操作次数。

Examples

input
4 2
1 2 3 4
output
4
input
4 2
0 1 2 3
output
6

Note

蝌蚪的个数不能是负的。

题目大意:最多进行多少次加减能使给定数列成为一个等差为k的数列(每次只能加或减一)

题解:代数分析+列式求解
具体地:先假设第一个数不变,然后用数组a[i]记录下后面的数与应得的数的差值,这时对第一个数进行操作 减 x ,那么后面的数则应进行操作abs(a[i]-x),则一共需要进行的操作次数是 abs(a[i]-x)从0到n-1的和,易知当x取数组a[i]的中位数时和最小,所以进行计算即可
[注意由改变后的数必须为非负数,所以需要对x的值进行限制]
 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
long long orz[];
int main()
{
long long n,k;
scanf("%lld%lld",&n,&k);
long long a;
scanf("%lld",&a);
long long A=a;
orz[]=;
int q=,w=;
for(int i = ; i < n ; i++){
long long b;
scanf("%lld",&b);
orz[i]=-(b-k-A);
A=A+k;
}
long long sum=;
sort(orz,orz+n);
long long aa=;
long long asd=max(aa,(-n)*k);
long long ass=a-asd;
// cout << asd << endl;
if(orz[n/]>ass){
for(int i = ; i < n ;i++){
sum+=abs(orz[i]-ass);
} }
else{
for(int i = ; i < n ;i++){
sum+=abs(orz[i]-orz[n/]);
}
} cout << sum <<endl;
return ;
}
 

【EOJ Monthly 2018.7】【D数蝌蚪】的更多相关文章

  1. EOJ Monthly 2018.7

    准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...

  2. EOJ Monthly 2018.4

    A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...

  3. EOJ Monthly 2020.1 E. 数的变幻

    题目链接:https://acm.ecnu.edu.cn/contest/247/problem/E/ 这道题是cf原题: Codeforces Round #608 (Div. 2) E. Comm ...

  4. EOJ Monthly 2018.11 猜价格 (模拟)

    分三种情况: 1.k=1.此时每次都说反话,反着二分即可. 2.1<k <= n.那么在前n次问答中一定会出现一次错误,通过不断输出1找出那个错误发生的位置(若回答是>那这就是错误) ...

  5. EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)

    D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...

  6. EOJ Monthly 2018.2

    A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p ...

  7. EOJ Monthly 2018.1

    985月赛,当时鸽了,现在想补一补 A. 石头剪刀布的套路 Time limit per test: 1.0 seconds Memory limit: 256 megabytes 现在有一种石头剪刀 ...

  8. EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)

    ultmaster 男神和小迷妹们玩起了捉迷藏的游戏. 小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自 ...

  9. [EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]

    题目链接:C. 痛苦的 01 矩阵 题目大意:原题说的很清楚了,不需要简化_(:з」∠)_ 题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j ...

随机推荐

  1. CAD(镜像对象)(镜像后的微调)(门窗标注)5.14

    由于绘制的cad图形整体是对称的,所以先画了一半,然后再镜像过去.沿着某一对称轴. 注意:1.有些三维内容在二维是选择不上的.2.对称轴上的柱子和墙体之类的不能选中.把轴网和标注的图层锁起来.冻结起来 ...

  2. MyBatis 为什么需要通用 Mapper ?

    一.通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字 ...

  3. HTML(二)选择器

    1.id选择器 一对一关系 <div id="only">123</div> #only{ background-color:black; } 2.clas ...

  4. Java获取后台数据,动态生成多行多列复选框

    本例目标: 获取后台数据集合,将集合的某个字段,比如:姓名,以复选框形式显示在HTML页面 应用场景: 获取数据库的人员姓名,将其显示在页面,供多项选择 效果如下: 一.后台 查询数据库,返回List ...

  5. Oracle创建database link(dblink)和同义词(synonym)

    同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接db ...

  6. div 内 图片 垂直居中

    vertical-align属性适用于 line-block: <div class="title"> <img src="img_p1_title.p ...

  7. 玩转X-CTR100 l STM32F4 l RNG硬件随机数发生器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 STM32F4硬件随 ...

  8. ksort 函数

    foreach ($modules AS $key => $value){ ksort($modules[$key]);}ksort($modules); strpos(','.$_SESSIO ...

  9. DeployMan,发布文件的利器

    利用Delphi开发app,有时候需要发布文件,如果文件少还不是问题,但文件多的情况下,IDE带的发布功能,就显得捉襟见肘,效率低下了. 通过Project-Deployment,打开发布窗口,如下图 ...

  10. FCC JS基础算法题(7):Chunky Monkey(分割数组)

    题目描述: 把一个数组arr按照指定的数组大小size分割成若干个数组块. 例如:chunk([1,2,3,4],2)=[[1,2],[3,4]]; chunk([1,2,3,4,5],2)=[[1, ...