https://scut.online/p/483

改了题目之后发现,其实n个点放在[1,2N],要求间距至少是2,那么有且只有一个点和前面点的间距是3(设-1存在一个点),其他点的间距都必须是2。排序后枚举这个点,这个点之前的点向左移动到尽头,这个点及其之后的点向右移动到尽头。显然这样考虑了所有的情况。考虑如何计算花费,预处理每个排序后的点去往他要去的位置的左尽头和右尽头绝对值前缀和,那么枚举断点的时候可以计算出两端的花费,假如是当前最低的则加入答案之中。

当时读错题了,以为不同移动的路径属于不同方法。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const int MAXN = 1000000 + 5;
const ll INF = 1e18; int n, a[MAXN], l[MAXN], r[MAXN];
ll prefixl[MAXN], prefixr[MAXN]; ll minsum;
int mini[MAXN], mitop;
//mini把i及其右侧的归到右边会产生最小值 int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
while(~scanf("%d", &n)) {
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
sort(a + 1, a + 1 + n);
for(int i = 1; i <= n; ++i) {
l[i] = abs(a[i] - (2 * i - 1));
r[i] = abs(a[i] - (2 * i));
prefixl[i] = prefixl[i - 1] + l[i];
prefixr[i] = prefixr[i - 1] + r[i];
}
mitop = 0;
minsum = INF;
for(int i = 1; i <= n + 1; ++i) {
if(prefixl[i - 1] + prefixr[n] - prefixr[i - 1] <= minsum) {
if(prefixl[i - 1] + prefixr[n] - prefixr[i - 1] == minsum) {
mini[++mitop] = i;
} else {
minsum = prefixl[i - 1] + prefixr[n] - prefixr[i - 1];
mini[mitop = 1] = i;
}
}
}
printf("%lld %d\n", minsum,mitop);
}
return 0;
}

SCUT - 483 - 数轴上的点的更多相关文章

  1. Codeforces Round #466 (Div. 2) A. Points on the line[数轴上有n个点,问最少去掉多少个点才能使剩下的点的最大距离为不超过k。]

    A. Points on the line time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. 给定数轴上的n个点,求距离最近的两个点的距离

    public class MinimumSpacing { //给定平面上的n个点,求距离最近的两个点的距离. //无从下手的话,先分解问题,分解成简单的,逐个分析,然后再合在一起考虑 //这是个2维 ...

  3. SCUT - 484 - 平面上的点 - 数据结构

    https://scut.online/p/484 一开始想的是按固定斜率的直线从无穷扫下来,但是一直都WA,不知道是哪里错了还是精度问题? #include<bits/stdc++.h> ...

  4. 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。

    #include <iostream> using namespace std; int maxCover(int* a, int n, int l) { ; ; ; while(end ...

  5. 关于scut在unity上的主动推送

    自带的samples里面,chat的例子涉及主动推送,可作为参考. 在unity里面接收主动推送用Net.CommonCallback 服务端最近的新版本更改了接口,有两种方法推送: ActionFa ...

  6. SCUT - 486 - 无向图上的点 - Dijkstra

    好像原题是这个?https://www.cnblogs.com/kanchuang/p/11120052.html 这个有解释:https://blog.csdn.net/wddwjlss/artic ...

  7. 【codevs1191】数轴染色 线段树 区间修改+固定区间查询

    [codevs1191]数轴染色 2014年2月15日4317 题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色.接着我们进行M次操作,第i次操作将[L ...

  8. 【wikioi】1191 数轴染色(线段树+水题)

    http://wikioi.com/problem/1191/ 太水的线段树了,敲了10分钟就敲完了,但是听说还有一种并查集的做法?不明觉厉. #include <cstdio> #inc ...

  9. Codevs 1191 数轴染色

    1191 数轴染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色. ...

随机推荐

  1. web项目重启命令

    jps -lvm|grep "young_rd_10004" | awk '{print $1}'|xargs kill -9; sleep 3; /home/web_server ...

  2. 由于数据库 'XXX' 离线,无法打开该数据库。

    大家使用sql server 进行还原的时候可能会遇到: system.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权 这个错误 下面是有一个解决 ...

  3. 箱排序(Bin Sort)

    1.基本思想 排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n). 箱排序也称桶排序(Bucket Sor ...

  4. 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,对象无效。不允许有扩展属性,或对象不存在。

    不知道网上为啥有那么多复制粘贴的文章,写点原创不好吗?堂而皇之的贴别人的文章有意思吗? 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,对象无效.不允许有扩 ...

  5. Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误

    ————————————————————————————————————————— *** 响应的数据格式  HTTP/1.1 200 OK  Server: Apache-Coyote/1.1  A ...

  6. sqli-labs(20)

    0X01 试探一下 这是登录成功的页面 这里题目高速我们是基于cookie的注入 0X01抓包试探 这里登陆的时候有两个包 我们要含有cookie的那个包 0X02试探判断是否cookie存在注入 C ...

  7. 《Effective Java》读书笔记 - 11.序列化

    Chapter 11 Serialization Item 74: Implement Serializable judiciously 让一个类的实例可以被序列化不仅仅是在类的声明中加上" ...

  8. JNI写本地日志文件

    调试JNI库 我喜欢反编译APK 然后替换.so文件 然后再编译成APK 其中写日志的话 用fopen("/sdcard/lei.txt","wb+")

  9. 十四、RF中SSHLibrary库介绍

    A.安装SSHLibrary:   pip2 install robotframework-sshlibrary   (导入SSHLibrary) B.远程连接linux服务器 1.#连接linux服 ...

  10. Git-Runoob:Git 工作区、暂存区和版本库

    ylbtech-Git-Runoob:Git 工作区.暂存区和版本库 1.返回顶部 1. Git 工作区.暂存区和版本库 基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电 ...