P3138 [USACO16FEB]负载平衡Load Balancing_Silver

https://www.luogu.org/problemnew/show/P3138

题目描述

农民约翰的N只牛分别站在他的二维农场的不同位置(x1,y1)…(xn,yn)(1<=N<=100000,xi和yi是正整奇数)。他想建一排无限长度的南北方向的满足等式x=a的围栏来把他的农场分成两部分(a是一个偶数,确保了不会使围栏建在任何一只牛的位置上)。他也想建一个无限长度的东西方向的满足等式y=b的围栏(b也是偶数)。这两个围栏在(a,b)点相交,并把农场分成了四个区域。约翰想选一对a和b使四个区域是"平衡"的,即不要让一个区域包含太多的牛。令M为四个区域中牛的数量的最大值,约翰想使M尽量的小。请帮他求出最小的M。 输入格式

第一行包含两个整数N和B。接下来的N行每行包含一只牛的位置x和y。

输出格式

输出M的最小值

输入样例

7 3

5 5

9 7

3 1

7 7

5 3

9 1

输出样例 

2

 1.首先离散y坐标,然后处理处关于横坐标的前缀和,表示当前在位置的y划分的结果。

 2.然后模拟扫描线沿着行方向自上向下扫描,相当于枚举x轴的划分。

 3.对于每一种x轴的划分,可以发现 : 令f(y)表示在当前位置划分的函数值是单峰的,所以就可以套三分了。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,pos[100050],sum[100050],now;
 4 int c[100050],ans,l,r,tl,tr,tot;
 5 struct node
 6 {
 7     int x,y,tmp;
 8     bool operator<(const node & p)const
 9     {
10         return x==p.x? tmp<p.tmp:x<p.x;
11     }
12 }num[100050];
13 bool cmp(int a,int b)
14 {
15     return num[a].tmp<num[b].tmp;
16 }
17 void calc_push(int u)
18 {
19     while(u<=now)
20     {
21         ++c[u];
22         u+=u&-u;
23     }
24 }
25 int calc_ask(int u)
26 {
27     int cnt=0;
28     while(u)
29     {
30         cnt+=c[u];
31         u-=u&-u;
32     }
33     return cnt;
34 }
35 int check(int u)
36 {
37     int tmp=calc_ask(u);
38     int ent=max(max(tmp,tot-1-tmp),max(sum[u]-tmp,n-(sum[u]-tmp+tot-1)));
39     ans=min(ans,ent);
40     return ent;
41 }
42 void calc()
43 {
44     l=1,r=now;
45     while(l<r)
46     {
47         tl=((l<<1)+r)/3;
48         tr=(l+(r<<1))/3;
49         if(l==tl)    ++tl;
50         if(r==tr)     --tr;
51         if(check(tl)<check(tr))     r=tr;
52         else     l=tl;
53     }
54 }
55 int main()
56 {
57     scanf("%d",&n);ans=n;
58     for(int i=1;i<=n;++i)
59     {
60         scanf("%d%d",&num[i].x,&num[i].tmp);
61         pos[i]=i;
62     }
63     sort(num+1,num+n+1);
64     sort(pos+1,pos+n+1,cmp);
65     for(int i=1;i<=n;++i)
66     {
67         if(num[pos[i]].tmp!=num[pos[i-1]].tmp)
68         {
69             ans=min(ans,max(sum[now],n-sum[now]));
70             sum[now+1]=sum[now];
71             ++now;
72         }
73         num[pos[i]].y=now;
74         ++sum[now];
75     }
76     for(int i=1;i<=n;i=tot)
77     {
78         tot=i;
79         while(num[tot].x==num[i].x)
80             calc_push(num[tot++].y);
81         calc();
82     }
83     printf("%d",ans);
84     return 0;
85 }
代码

 

转载于:https://www.cnblogs.com/wyher/p/9800034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

saas物资管理界面设计_大型物流企业都在用的SaaS系统,看大规模运配网络如何实现精细化管理?...

企业发展到一定阶段&#xff0c;货品销售网络会不断扩大&#xff0c;就必须有大型高效的物流体系作为支撑&#xff0c;就需要大规模运配网络实现订单履约&#xff0c;物流企业的更大更多的商机也因此产生。由此可见&#xff0c;拥有大规模运配网络的主体有两类&#xff1a;第一…

socket read time out解决方法_time_after方法对jiffies回绕问题的解决

前言&#xff1a; 最近在啃《 Linux内核设计与实现》&#xff0c;看到第四章CFS时候&#xff0c;读了几遍没太理清这一小节到思路&#xff0c;看到40页这么一句话&#xff1a;“如果这里所讨论的定时器节拍对你来说很陌生&#xff0c;快先去看看第十一章再说。因为这点正是引入…

ASP.NET Core Razor Pages

Razor 页面是Asp.Net Core2.0新增的一个功能。Razor 页面是 ASP.NET Core MVC 的一个新特性&#xff0c;它可以使基于页面的编码方式更简单高效。 环境&#xff1a;vs2017 .net core2.2 Razor 页面项目搭建 目录说明 wwwroot&#xff1a;放置网站的静态文件的目录。例如/wwwroo…

curd操作php代码,Laravel 5.6中的CURD操作(代码示例详解)

在本篇文章中&#xff0c;我将给大家分享laravel 5.6版本中的基本crud(创建&#xff0c;读取&#xff0c;更新和删除)应用程序模块。你可以按照下面的步骤在laravel 5.6中创建CRUD应用程序。Laravel是一个流行的开源PHP MVC框架&#xff0c;具有许多高级开发功能。如果你是lara…

为什么c++的开源库那么少?

为什么c的开源库那么少&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 C的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#xff01;…

实施动态代理-比较

有时需要拦截某些方法调用&#xff0c;以便每次调用被拦截方法时都执行自己的逻辑。 如果您不属于Java EE的CDI领域&#xff0c;并且不想使用诸如Aspectj之类的AOP框架&#xff0c;那么您将有一个简单而有效的替代方法。 从1.5版开始&#xff0c;JDK附带了类java.lang.reflect…

结构专业规范大全_1.2万篇 建筑行业规范大全套!速来!

应广大站友以及会员用户对建筑规范的要求&#xff0c;我们整理了近几年来国家发布的各个专业的标准、规范、图集&#xff0c;以及全国各地共32个地区的区域标准&#xff0c;总计12000余篇&#xff0c;共计80G的建筑行业规范&#xff01;BIMer自学站将会在一到两个月的之间内相继…

数据库如何进行索引优化

数据库索引 1&#xff0e;什么是索引 在数据库中&#xff0c;索引的含义与日常意义上的“索引”一词并无多大区别&#xff08;想想小时候查字典&#xff09;&#xff0c;它是用于提高数据库表数据访问速度的数据库对象。A&#xff09;索引可以避免全表扫描。多数查询可以仅扫描…

第二章总结

第二章 寄存器 1.CPU概述 一个典型的CPU由运算器、控制器、寄存器等器件组成。 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板上其它器件的联系。 2.通用寄存器 8086CPU中&#xff0c;寄存器AX, BX, CX, DX通常用于存放一般性数据&#xff0c;称为通用寄存器…

ashly理器4.8软件汉化版_AMD 处理器核心比英特尔多还更便宜?英特尔回应

IT之家 9 月 25 日消息 英特尔已在本月初发布了 11 代酷睿移动处理器&#xff0c;搭载 11 代酷睿的产品最早将在 10 月上市。现在&#xff0c;新浪科技访了英特尔公司中国零售销售集团总经理唐炯&#xff0c;就 11 代酷睿产品进行讨论。在谈到 AMD 处理器比英特尔便宜&#xff…

OutOfMemoryError:解决方案反模式

这些年来&#xff0c;我们一直密切关注以OutOfMemoryError消息的不同形式打包的问题。 通过专门的服务&#xff08;例如Google警报&#xff09;&#xff0c;每天就特定关键字的新问题进行摘要&#xff0c;使我们对应用程序因日志中的java.lang.OutOfMemoryError失败而出现的情况…

leetcood学习笔记-58-最后一个单词的长度

题目描述&#xff1a; 第一次解答&#xff1a; class Solution:def lengthOfLastWord(self, s: str) -> int:Ls.strip().split(" ")if L[-1]"" :return 0return len(L[-1]) 优化后&#xff1a; class Solution:def lengthOfLastWord(self, s: str) ->…

Plyr – 简单,灵活的 HTML5 媒体播放器

Plyr 是一个简单的 HTML5 媒体播放器&#xff0c;包含自定义的控制选项和 WebVTT 字幕。它是只支持现代浏览器&#xff0c;轻量&#xff0c;方便和可定制的媒体播放器。还有的标题和屏幕阅读器的全面支持。 在线演示 源码下载 您可能感兴趣的相关文章网站开发中很有用的 …

第一章 SpringBoot快速入门

1.1、包依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.14.RELEASE</version><relativePath/> <!-- lookup parent from repository --> …

solaris配置php,Solaris下安装Oracle_启动Oracle及监听

无论是在Linux下还是在Solaris下都安装过很多次Oracle&#xff0c;几乎都没成功过。最开始安装的时候连安装页面都见不到&#xff0c;后来&#xff0c;能够看到安无论是在Linux下还是在Solaris下都安装过很多次Oracle&#xff0c;几乎都没成功过。最开始安装的时候连安装页面都…

【C++】满二叉树问题

/* 给出一棵满二叉树的先序遍历&#xff0c;有两种节点&#xff1a;字母节点&#xff08;A-Z&#xff0c;无重复&#xff09;和空节点&#xff08;#&#xff09;。要求这个树的中序遍历。输出中序遍历时不需要输出#。 满二叉树的层数n满足1<n<5。Sample Input: ABC#D#ESa…

NativeScript - JS 构建跨平台的原生 APP

使用 NativeScript&#xff0c;你可以用现有的 JavaScript 和 CSS 技术来编写 iOS、Android 和 Windows Phone 原生移动应用程序。由原生平台的呈现引擎呈现界面而不是 WebView&#xff0c;正因为如此&#xff0c;应用程序的整个使用体验都是原生的。 NativeScript 使您可以使用…

java乱码base64,解决 JAVA WebSocket 解析 base64 后中文字符串乱码

解决 JAVA WebSocket 解析 base64 后中文字符串乱码解决 JAVA WebSocket 解析 base64 后中文字符串乱码春风如贵客&#xff0c;一到便繁华。各位看官先赞再看&#xff0c;养成好习惯(●?&#xff40;●)前言&#xff1a;项目基于WebSocket实现了一个功能&#xff0c;其中要接受…

Riot - 比 Facebook React 更轻量的 UI 库

Riot 是一个类似 Facebook React 的用户界面库&#xff0c;只有3.5KB&#xff0c;非常轻量。支持IE8 浏览器的自定义标签&#xff0c;虚拟 DOM&#xff0c;语法简洁。Riot 给前端开发人员提供了除 React 和 Ploymer 之外的新选择&#xff0c;值得一试。 在线演示 源码下载…

FormatJS – 让你的 Web 应用程序国际化

FormatJS 是一个模块化的集合&#xff0c;保护各种 JavaScript 国际化库&#xff0c;例如格式化数字&#xff0c;日期和字符串。它包括一组建立在 JavaScript 的国际内置插件和全行业的国际化标准&#xff0c;再加上一套集成的通用模板和组件库。 在线演示 源码下载 您可能…