题意:一个邮递员从数轴上原点出发,每次最多带K封信,往n个地方送信,每个地方有一定的需求的信件数,问你最少要跑的距离的总和是多少?一趟可以给多个地方去送。

显然优先往远的地方送比较优越,近的地方可以顺路给他带过去。

原点两侧是独立的,可以分别处理。

#include<cstdio>
#include<algorithm>
using namespace std;
int Abs(int x){
return x<0 ? (-x) : x;
}
typedef pair<int,int> Point;
typedef long long ll;
ll ans;
int n,K;
Point p[1005];
int main(){
// freopen("i.in","r",stdin);
scanf("%d%d",&n,&K);
for(int i=1;i<=n;++i){
scanf("%d%d",&p[i].first,&p[i].second);
}
sort(p+1,p+n+1);
int now=0;
for(int i=1;p[i].first<0;++i){
if(p[i].second<=now){
now-=p[i].second;
}
else{
p[i].second-=now;
ans+=(ll)(p[i].second/K+(p[i].second%K!=0))*(ll)Abs(p[i].first)*2ll;
if(p[i].second%K!=0){
now=K-p[i].second%K;
}
else{
now=0;
}
}
}
now=0;
for(int i=n;p[i].first>0;--i){
if(p[i].second<=now){
now-=p[i].second;
}
else{
p[i].second-=now;
ans+=(ll)(p[i].second/K+(p[i].second%K!=0))*(ll)Abs(p[i].first)*2ll;
if(p[i].second%K!=0){
now=K-p[i].second%K;
}
else{
now=0;
}
}
}
printf("%I64d\n",ans);
return 0;
}

【贪心】Gym - 101201I - Postman的更多相关文章

  1. Gym 101201I Postman (贪心)

    题意:有个邮递员,要送信,每次最多带 m 封信,有 n 个地方要去送,每个地方有x 封要送,每次都到信全送完了,再回去,对于每个地方,可以送多次直到送够 x 封为止. 析:一个很简单的贪心,就是先送最 ...

  2. 贪心 Gym 100502E Opening Ceremony

    题目传送门 /* 题意:有一堆砖块,每一次操作可以选择消去任意一行,也可以选择消去任意一列.求要消去所有的砖块需要最小的操作数 贪心:首先清楚的是消去最高列的最佳,消去第一行最佳,行列的顺序只对中间过 ...

  3. Codeforces Gym 100803C Shopping 贪心

    Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...

  4. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

  5. codeforces Gym 100187F F - Doomsday 区间覆盖贪心

    F. Doomsday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/F ...

  6. hdu-5695 Gym Class(贪心+拓扑排序)

    题目链接: Gym Class Time Limit: 6000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

  7. Codeforces Gym 100269E Energy Tycoon 贪心

    题目链接:http://codeforces.com/gym/100269/attachments 题意: 有长度为n个格子,你有两种操作,1是放一个长度为1的东西上去,2是放一个长度为2的东西上去 ...

  8. Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  9. Gym 101775B - Scapegoat - [贪心+优先队列]

    题目链接:http://codeforces.com/gym/101775/problem/B Aori is very careless so she is always making troubl ...

随机推荐

  1. js_setCookie,getCookie和checkcookie函数

    随便说说: cookie和sessionStrong,localStrong在web应用中都有一种存储的功能,也就是说可以把一些数据记录在浏览器.cookie和后两者的主要区别 是cookie是和后端 ...

  2. c语言中的size_t

    size_t unsigned int 类型,无符号,它的取值没有负数.用来表示 参数/数组元素个数,sizeof 返回值,或 str相关函数返回的 size 或 长度.sizeof 操作符的结果类型 ...

  3. 【Python学习笔记】colormap的参数及其对应的色条

  4. 哈希表(一):解决hash冲突的几种方法

    (一)线性探测法 线性探测法是最简单的处理冲突的方法. (1)插入元素:插入元素时,如果发生冲突,算法将从该槽位向后遍历哈希表,直到找到表中的下一个空槽,并将该值放入到空槽当中. (2)查找元素:查找 ...

  5. Development tools[重点]

    Development tools yum groupinfo "Development tools" Loaded plugins: product-id, security, ...

  6. Smarty模板快速入门

    文件下载 1.下载地址:http://www.smarty.net/ 2.我下载的版本是3.1.27 ,将下载的文件smarty-3.1.27.zip解压出来,然后将libs文件夹的所有文件复制到你的 ...

  7. [How to] 动态布局可变高度的cell的应用

    1.简介 代码:https://github.com/xufeng79x/DynamicChangeableCell 微博界面,微信和QQ聊天界面,这些界面的布局大都不确定,且每一条消息的高度也不一样 ...

  8. python插入oracle数据

    # coding=utf- ''''' Created on -- @author: ''' import json; import urllib2 import sys import cx_Orac ...

  9. linux命令(22):mkdir命令

    实例1:创建一个空目录 mkdir  test 实例2:递归创建多个目录 mkdir  -p /home/test 实例3:创建权限为777的目录 mkdir -m 777 test 实例4:创建新目 ...

  10. node采用的commonJs规范

    AMD与commonJS规范不同 同步加载 主要就是一个输出,一个引入,我也建了两个文件,一个输出文件一个引入文件 export.js ; ; ; function incCounter(){ cou ...