Kick Start 2019 - Round A A.Training 题解

题意

n个数中选出一组K个数,要求这一组数中所有数与这组数中最大值的差之和最小。

思路

很容易想到排序构造单调性,很容易想到利用前缀和降低复杂度。

把题意翻译成数学语言就是:

$\sum_{j=i}^{i+K-1}a[i] - a[j] $

$=K*a[i] -\sum_{j=i}^{i+K-1}a[j]$

$=K*a[i]-(s[i+K-1]-s[i-1])?$

化简式子之后就可以线性做了。

代码

 1 #define inf 1000000000
 2 int n,K;
 3 LL a[N];
 4 LL s[N];
 5 bool cmp(const LL &x, const LL &y)
 6 {
 7     return x>y;
 8 }
 9 int main()
10 {
11     int tt=read();
12     F(Case,1,tt){
13         n=read();K=read();
14         F(i,1,n) a[i]=read();
15         sort(a+1,a+n+1,cmp);
16         s[1]=a[1];
17         F(i,2,n) s[i]=s[i-1]+a[i];
18         LL ans=inf;
19         F(i,1,n-K+1){
20             LL sum=0LL;
21             sum=K*a[i]-(s[i+K-1]-s[i-1]);
22             ans=min(ans,sum);
23         }
24         printf("Case #%d: %d\n",Case,ans);
25     }
26     return 0;
27 }

原文地址:https://www.cnblogs.com/Ryan0v0/p/10612395.html

时间: 2024-10-30 08:40:38

Kick Start 2019 - Round A A.Training 题解的相关文章

【DP 好题】Kick Start 2019 Round C Catch Some

题目链接 题目大意 在一条数轴上住着 $N$ 条狗和一个动物研究者 Bundle.Bundle 的坐标是 0,狗的坐标都是正整数,可能有多条狗住在同一个位置.每条狗都有一个颜色.Bundle 需要观测 $K$ 条狗.要观测一条狗 Bundle 必须走到狗的住处,并且穿着和狗同色的衣服.Bundle 只能在家换衣服.试问 Bundle 至少要走多长的路程?注意:最后 Bundle 不必回到住处. Constraints 不超过 100 组测试数据 $ 1 \le N \le 1000 $ $ 1

Kick Start 2019 Round A Parcels

题目大意 $R \times C$ 的网格,格子间的距离取曼哈顿距离.有些格子是邮局.现在可以把至多一个不是邮局的格子变成邮局,问每个格子到最近的邮局的曼哈顿距离的最大值最小是多少. 数据范围 $ 1 \le R \le 250 $ $ 1 \le C \le 250 $ 100 组测试数据 Time limit: 15 s 分析 显然可以二分答案. 几何视角 考虑平面上的整点(也称格点).到一个格点的曼哈顿距离不大于 $k$ 的所有格点的轮廓是一个旋转了 45° 的正方形( For any p

Codeforces Round #262 (Div. 2) 题解

A. Vasya and Socks time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vasya has n pairs of socks. In the morning of each day Vasya has to put on a pair of socks before he goes to school. When

Codeforces Round #FF (Div. 2) 题解

比赛链接:http://codeforces.com/contest/447 A. DZY Loves Hash time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output DZY has a hash table with p buckets, numbered from 0 to p?-?1. He wants to insert n 

Codeforces Round #259 (Div. 2) 题解

A. Little Pony and Crystal Mine time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Twilight Sparkle once got a crystal from the Crystal Mine. A crystal of size n (n is odd; n?>?1) is an n?×?n 

Codeforces Round #177 (Div. 2) 题解

[前言]咦?现在怎么流行打CF了?于是当一帮大爷在执着的打div 1的时候,我偷偷的在刷div 2.至于怎么决定场次嘛,一般我报一个数字A,随便再拉一个人选一个数字B.然后开始做第A^B场.如果觉得机密性不高,来点取模吧.然后今天做的这场少有的AK了.(其实模拟赛只做完了4题,最后1题来不及打了) 等等,话说前面几题不用写题解了?算了,让我难得风光一下啦. [A] A. Polo the Penguin and Segments time limit per test 2 seconds mem

Codeforces Round #534 (Div. 2)题解

Codeforces Round #534 (Div. 2)题解 A. Splitting into digits 题目大意 将一个数字分成几部分,几部分求和既是原数,问如何分可以使得分出来的各个数之间的差值尽可能小 解题思路 将n分成n个1相加即可 AC代码 #include<cstring> #include<string> #include<iostream> #include<cstdio> using namespace std; int main

Codeforces Round #561 (Div. 2) 题解

Codeforces Round #561 (Div. 2) 题解 题目链接 A. Silent Classroom 水题. Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 105; int n; char s[N], t[N]; int main() { cin >> n; for(int i = 1; i <= n; i++) { scanf(&q

Codeforces Round #608 (Div. 2) 题解

目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 程序 D. Portals 题意 做法 程序 E. Common Number 题意 做法 程序 结束语 Codeforces Round #608 (Div. 2) 题解 前言 题目链接:仅仅只是为了方便以题目作为关键字能查找到我的题解而已(逃 Codeforces 1271A Codeforce