BZOJ4411——[Usaco2016 Feb]Load balancing
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define M 100010
inline int read(){
char ch = getchar(); int x = 0, f = 1;
while(ch < '0' || ch > '9'){
if(ch == '-') f = -1;
ch = getchar();
}
while('0' <= ch && ch <= '9'){
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
struct Node{
int x, y;
inline bool operator < (const Node& rhs) const{
return y < rhs.y;
}
} a[M];
pair<int , int> li[M];
int C[2][M], tt;
int n;
inline void change(int c[], int x, int y){
for(; x <= n; x += (x & -x)) c[x] += y;
}
inline int query(int c[], int x){
int res = 0;
for(; x > 0; x -= (x & -x)) res += c[x];
return res;
}
inline bool check(int x){
int size0 = n, size1 = 0;
memset(C, 0, sizeof(C));
for(int i = 1; i <= n; i ++) change(C[0], a[i].x, 1);
int it0 = 1, it1 = n;
for(int t, j = 1, i = 1; i <= n; i = j){
while(a[j].y == a[i].y){
change(C[0], a[j].x, -1), size0 --;
change(C[1], a[j].x, 1), size1 ++; j ++;
}
while(it0 <= n && query(C[0], it0) <= x) it0 ++; it0 --;
while(it1 > 0 && query(C[1], it1) > x) it1 --;
t = min(it0, it1);
if(size0 - query(C[0], t) <= x && size1 - query(C[1], t) <= x) return 1;
}
return 0;
}
int main(){
n = read();
for(int i = 1; i <= n; i ++) a[i].x = read(), a[i].y = read(), li[i].first = a[i].x, li[i].second = i;
sort(li + 1, li + n + 1);
tt = 0;
li[0].first = -2147483647;
for(int i = 1; i <= n; i ++){
if(li[i].first != li[i - 1].first) tt ++;
a[li[i].second].x = tt;
}
sort(a + 1, a + n + 1);
int l = 1, r = n, ans = n;
while(l <= r){
int mid = (l + r) / 2;
if(check(mid)) r = (ans = mid) - 1;
else l = mid + 1;
}
printf("%d\n", ans);
return 0;
}
BZOJ4411——[Usaco2016 Feb]Load balancing的更多相关文章
- [bzoj4411] [Usaco2016 Feb]Load balancing
先离散化一下(也可以不用 枚举横坐标,用线段树维护两边纵坐标上的节点数. 每次在线段树上二分...(感觉似乎树状数组也行? #include<cstdio> #include<ios ...
- bzoj千题计划180:bzoj4411: [Usaco2016 Feb]Load balancing
http://www.lydsy.com/JudgeOnline/problem.php?id=4411 用树状数组维护扫描线 一个树状数组维护扫描线之上的y<=i点,另一个维护扫描线之下y&l ...
- BZOJ 4411: [Usaco2016 Feb]Load balancing 线段树+二分
code: #include <bits/stdc++.h> #define N 100060 #define M 1000000 #define lson x<<1 #def ...
- bzoj4409&&bzoj4410&&bzoj4411[Usaco2016 Feb Platinum]题解
辣鸡wyz最近状态奇差,于是想用usaco题找找手感,万万没想到被虐了一脸TAT 先贴代码,有空再填坑 4409[Usaco2016 Feb]Circular barn #include <io ...
- 【架构】How To Use HAProxy to Set Up MySQL Load Balancing
How To Use HAProxy to Set Up MySQL Load Balancing Dec 2, 2013 MySQL, Scaling, Server Optimization U ...
- CF# Educational Codeforces Round 3 C. Load Balancing
C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心
C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...
- UVA 12904 Load Balancing 暴力
Load Balancing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vi ...
- Load Balancing 折半枚举大法好啊
Load Balancing 给出每个学生的学分. 将学生按学分分成四组,使得sigma (sumi-n/4)最小. 算法: 折半枚举 #include <iostrea ...
随机推荐
- HtmlAgilityPack使用
http://stackoverflow.com/questions/5876825/htmlagilitypack-and-timeouts-on-load http://stackoverflow ...
- BZOJ2827: 千山鸟飞绝
离散化坐标,每个坐标开一棵以鸟的编号为关键字的平衡树.每次插入时打2个标记,同时更新自身.这个方法比较显然,而且好写.正解好像用很迷的方法乱搞了一波,然后用线段树不打标记就做出来了,并不会. trea ...
- Java-IO之DeflaterOutputStream和InflaterOutputStream
此类为使用 "deflate" 压缩格式压缩数据实现输出流过滤器 example import java.io.File; import java.io.FileInputStre ...
- cmake 静态调用 c++ dll 的类的一个例子(Clion IDE)
CMakeLists.txt project(aaa) add_library(aaa SHARED aaa.cpp) add_executable(bbb bbb.cpp) target_link_ ...
- C# vs C++ Performance
http://www.codeproject.com/Articles/212856/Head-to-head-benchmark-Csharp-vs-NET
- 常用的Sql 函数
常用的Sql 函数 1: replace 函数,替换字符. 语法 replace (original-string, search-string, replace-string ) 第一个参数你的字符 ...
- Python之路【第十一篇续】前端初识之CSS
css解释 css样式: css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化,CSS的可以使页面更加的美观.基本上所有的html页面都或多或少的使用cs ...
- apache 的工作模式
总结:访问量大的时候使用 worker模式: 每个进程,启动多个线程来处理请求,每个线程处理一次请求,对内存要求比较高. prefoek模式 : 每个子进程只有一个线程,一次请求一个进程. 什么是a ...
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
主要区别就是: BeanFactoryPostProcessor可以修改BEAN的配置信息而BeanPostProcessor不能,下面举个例子说明 BEAN类: package com.spring ...
- 再说vim的tab设置
首先, vim的设置允许简写 // 单击一次tab,停靠, 停止在 4个spaces距离处 set tabstop=4 , 可以简写为: set ts=4 // 允许将tab转换为空格 turn ta ...