题目链接


\(Description\)

坐标轴正半轴上有\(n\)个垃圾,位置分别是\(x_i\)。在原点处有一个垃圾桶。一个机器人要从原点出发,将所有垃圾带到垃圾桶(原点)处。

机器人可以在坐标轴上任意移动。当路过一个垃圾时,可以选择花费\(X\)的能量捡起垃圾,也可以不管它。一旦捡起就不能放下,除非回到原点将其扔掉。回到原点时可以花费\(X\)的能量将自己携带的垃圾全部扔掉。当机器人携带\(k\)件垃圾时,每走一单位距离会花费\((k+1)^2\)的能量。

给定\(n,X\)及每个垃圾的坐标,求机器人扔掉所有垃圾的最小能量花费。

\(n\leq10^5,\ 0<x_1<...<x_n\leq10^9,\ X\leq10^9\)。

\(Solution\)

先把捡起和放下垃圾的花费去掉。枚举分\(k\)次扔垃圾,那么这部分花费就是\((n+k)\times X\)。

考虑某一次取了从左到右是\(a,b,c,d\)这四个位置的垃圾的花费:\(d+4(d-c)+9(c-b)+16(b-a)+25a\),化简后是\(5d+5c+7b+9a\)。也就是代价和位置有关,且最远和次远位置的系数是\(5\),更近的位置的系数是\(7,9,11...\)。

显然应该令这\(k\)次扔垃圾中,最远和次远的位置是最远的\(2k\)个点,然后依次往靠近原点的位置分系数即可。

枚举\(k\),每次选\(k\)个共选\(\frac nk\)次,复杂度\(O(n\ln n)\)。

注意一些很劣的方案会使结果爆long long?要特判。


//7ms	2048KB
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
#define MAXIN 300000
//#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=2e5+5; LL s[N];
char IN[MAXIN],*SS=IN,*TT=IN; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
} int main()
{
const int n=read(); LL X=read(),ans=X*n;
for(int i=1,a; i<=n; ++i) s[i]=s[i-1]+(a=read()), ans+=5ll*a;
for(int k=1; k<n; ++k)
{
LL tmp=X*k;
for(int i=n,j,t=1; i; i=j,++t)
{
j=std::max(i-k,0);
tmp+=(s[i]-s[j])*std::max(5ll,t*2+1ll);
if(tmp>ans) break;
}
ans=std::min(ans,tmp);
}
printf("%lld\n",ans+X*n); return 0;
}

AGC 027B.Garbage Collector(贪心)的更多相关文章

  1. agc 027 B - Garbage Collector

    B - Garbage Collector https://agc027.contest.atcoder.jp/tasks/agc027_b 题意: x坐标轴上n个垃圾,有一个机器人在从原点,要清扫垃 ...

  2. AGC027 B - Garbage Collector 枚举/贪心

    目录 题目链接 题解 代码 题目链接 AGC027 B - Garbage Collector 题解 对于一组选取组的最优方案为,走到一点,然后顺着路径往回取点 设选取点坐标升序为{a,b,c,d} ...

  3. [GC]一个简单的Garbage Collector的实现

    前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为了增加自己的理解,决定把大牛的想法和代码分析一遍,与 ...

  4. 一个简单的Garbage Collector的实现

    一个简单的Garbage Collector的实现 前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为 ...

  5. New Garbage Collector http://wiki.luajit.org/New-Garbage-Collector

    New Garbage Collector http://wiki.luajit.org/New-Garbage-Collector GC Algorithms This is a short ove ...

  6. c++ [wrong]simple "Garbage Collector"

    In fact, Ptr alone can accomplish the task mentioned below. Implementation see Ptr.h, main2.cpp. In ...

  7. Getting Started with the G1 Garbage Collector(译)

    原文链接:Getting Started with the G1 Garbage Collector 概述 目的 这篇教程包含了G1垃圾收集器使用和它如何与HotSpot JVM配合使用的基本知识.你 ...

  8. Erlang Garbage Collector

    Erlang Garbage Collector | Erlang Solution blog https://www.erlang-solutions.com/blog/erlang-garbage ...

  9. 提交并发量的方法:Java GC tuning :Garbage collector

    三色算法,高效率垃圾回收,jvm调优 Garbage collector:垃圾回收器 What garbage? 没有任何引用指向它的对象 JVM GC回收算法: 引用计数法(ReferenceCou ...

随机推荐

  1. Mesh无线网络的定义与WiFi的区别

    Mesh无线网络的定义与WiFi的区别 无线Mesh网络(无线网状网络)也称为「多跳(multi-hop)」网络,它是一种与传统无线网络完全不同的新型无线网络技术.无线网状网是一种基于多跳路由,对等网 ...

  2. 4.8cf自训

    发现cf以前的好题真的很多.. cf 730j 01背包变形 感觉很好的题 /* 先处理出最少需要t个瓶子 dp[i][j][k]前i个取k个,容量为j时的水的体积 滚动数组搞一下 本题的状态转移必须 ...

  3. javascript 将毫秒值转换为天-小时-分钟-秒钟

    var start_timeMS = new Date(start_date).getTime(); var end_timeMS = new Date(end_date).getTime(); va ...

  4. java数据

    因为曾经干了啥事儿,才印象特别深刻. 将byte存入String的后果 String res = ""; res += (char) 0xc3; byte[] bytes = re ...

  5. Python(列表操作应用实战)

    # 输入一个数据,删除一个列表中的所有指定元素# 给定的列表数据data = [1,2,3,4,5,6,7,8,9,0,5,4,3,5,"b","a",&quo ...

  6. requests之json系列(一)

    以post方式获取接口指定的相关信息 #! /usr/bin/env python # coding=utf-8 import json import urllib import requests i ...

  7. C#学习-类的成员

    定义完类之后,还需在类中定义成员. 类的成员包括字段.属性.方法和构造函数等,它们与类一样,也都有自己的访问权限.以下是 public,同一个程序集或引用该程序集的其他程序集都可以访问 private ...

  8. [转] Lodash

    与underscore 类似 , 是1个js库,内部封装了诸多对字符串.数组.对象等常见数据类型的处理函数. 模块组成 Lodash 提供的辅助函数主要分为以下几类,函数列表和用法实例请查看 Loda ...

  9. eclipse发布后在tomcat下没有文件夹,服务器的Server locations不能修改

    主要是因为Server locations中的deploy路径不正确,要修改这个路径,需要移除服务器中的所有项目,然后点击清空,这时再双击服务器,既可修改这个设置.

  10. Flink--输入数据集Data Sources

    flink在批处理中常见的source flink在批处理中常见的source主要有两大类. 1.基于本地集合的source(Collection-based-source) 2.基于文件的sourc ...