题意:

长者对小明施加了膜法,使得小明每天起床就像马丁的早晨一样。 今天小明早上6点40醒来后发现自己变成了一名高中生,这时马上就要做早操了,小明连忙爬起来 他看到操场密密麻麻的人,突然灵光一闪想到了一个很严肃的问题: 操场上有n个人,第i个人的坐标为(xi, yi),刚开始每个人都站的很松散,现在想把所有人排成一行平行x轴紧挨着的队伍,求所有人需要移动的曼哈顿距离之和的最小值。

分析:

第一次三分高度,第二次,按照x 坐标排序,三分起点。

csuoj 不支持bits/stdc++.h %I64d

#include <cstdio>
#include <algorithm> using namespace std; const int maxn = + ; int n;
struct Point
{
int x,y;
} node[maxn]; bool cmp(Point a,Point b)
{
return a.x<b.x;
} long long calc(int x)
{
long long sum = ;
for(int i=; i<n; i++)
sum += abs(node[i].y-x);
return sum;
} long long calc2(int mid)
{
long long ret=;
for(int i=; i<n; i++)
ret+=abs(node[i].x-mid-i);
return ret;
} int main()
{
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
int L = 1e9,R = -1e9;
for(int i=; i<n; i++)
{
scanf("%d%d",&node[i].x,&node[i].y);
L = min(L,node[i].y);
R = max(R,node[i].y);
} sort(node,node+n,cmp); while (L<R-)
{
int lmid=(L+R)>>;
int rmid=(lmid+R)>>;
if (calc(lmid)<=calc(rmid)) R=rmid;
else L=lmid;
} long long ans=min(calc(L),calc(R));
L=node[].x-n-;
R=node[n-].x;
while (L<R-) //三分起始点
{
int lmid=(L+R)>>;
int rmid=(lmid+R)>>;
if (calc2(lmid)<=calc2(rmid)) R=rmid;
else L=lmid;
} ans+=min(calc2(L),calc2(R));
printf("%lld\n",ans);
} return ;
} /**********************************************************************
Problem: 1947
User: CrimsonFantasy
Language: C++
Result: AC
Time:1124 ms
Memory:1900 kb
**********************************************************************/

csu 1947 三分的更多相关文章

  1. csu 1548(三分)

    1548: Design road Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: 383  Solved: 200[Submit][Status][We ...

  2. 三分 --- CSU 1548: Design road

    Design road Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1548 Mean: 目的:从(0,0)到 ...

  3. CSU 1548 Design road(三分查找)

    题目链接:https://cn.vjudge.net/problem/142542/origin Description You need to design road from (0, 0) to ...

  4. 关于ACM,关于CSU

    原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...

  5. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  6. hdu3714 三分找最值

    Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  7. BZOJ 1857 传送带 (三分套三分)

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...

  8. hdu 4717(三分求极值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 思路:三分时间求极小值. #include <iostream> #include ...

  9. HDU2438 数学+三分

    Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. 采用MQTT协议实现android消息推送(4)选fusesource-mqtt-client为客户端

    1.简介 一个java写的mqtt客户端.项目地址: https://github.com/fusesource/mqtt-client 2.引入fusesource-mqtt-client库 Fil ...

  2. c语言实现队列的基本操作

    话不多说,直接代码 #include"stdio.h" #include"stdlib.h" typedef struct QNode{ int date; s ...

  3. 我的博客已经迁移到csdn

    博客已经迁移csdnhttp://blog.csdn.net/u013372900 博客园我很喜欢是源于他的可扩展性,可以自己去改,但遗憾的是博客园的速度似乎不是很给力.IT能有今天的 发展是源于无数 ...

  4. JS 用正则表达式,验证密码包含数字和字母的方法

    必须包含至少一位数字和一位字母,脚本方法如下: function CheckPassWord(password) {//密码必须包含数字和字母 var str = password; if (str ...

  5. Coursera 机器学习 第7章 Support Vector Machines 学习笔记

    7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...

  6. 九度oj题目1511:从尾到头打印链表

    题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6010 解决:1805 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包 ...

  7. 【Shell】shell 判断文件夹或文件是否存在

    1.文件夹不存在则创建,文件夹是directory if [ ! -d "/data/" ];then mkdir /data else echo "文件夹已经存在&qu ...

  8. SQL脚本整理系列一 分隔函数

    原来效果: fName Scroe 王某某 ,, 李某某 , 王某某 李某某 李某某 ,, 王某某 执行后效果: name score 李某某 李某某 李某某 王某某 王某某 王某某 王某某 王某某 ...

  9. 如何给swing加上alt+x和ctrl+x快捷键

    1.给菜单栏上的菜单alt+x快捷键非常简单: private JMenu helpInfo = new JMenu("帮助"); helpInfo.setMnemonic(Key ...

  10. 个人MySQL股票数据库的建立日记

    #!/usr/bin/python# -*- coding: UTF-8 -*- import tushare as tsfrom sqlalchemy import create_engine co ...