Wei Qing (died 106 BC) was a military general of the Western Han dynasty whose campaigns against 
the Xiongnu earned him great acclaim. He was a relative of Emperor Wu because he was the younger 
half-brother of Empress Wei Zifu (Emperor Wu’s wife) and the husband of Princess Pingyang. He was 
also the uncle of Huo Qubing, another notable Han general who participated in the campaigns against 
the Xiongnu and exhibited outstanding military talent even as a teenager. 
Defeated by Wei Qing and Huo Qubing, the Xiongnu sang: “Losing my Qilian Mountains, made 
my cattle unthriving; Losing my Yanzhi Mountains, made my women lacking rouge.” 
The text above is digested from Wikipedia. Since Wei and Huo’s distinguished achievements, 
Emperor Wu decided to give them some awards — a piece of land taken by them from Xiongnu. This 
piece of land was located in a desert, and there were many oases in it. Emperor Wu wanted to draw 
a straight south-to-north dividing line to divide the land into two parts, and gave the western part to 
Wei Qing while gave the eastern part to Huo Qubing. There are two rules about the land dividing: 
1. The total area of the oases lay in Wei’s land must be larger or equal to the total area of the oases 
lay in Huo’s land, and the difference must be as small as possible. 
2. Emperor Wu wanted Wei’s land to be as large as possible without violating the rule 1. 
To simplify the problem, please consider the piece of land given to Wei and Huo as a square on a 
plane. The coordinate of its left bottom corner was (0,0) and the coordinate of its right top corner 
was (R, R). Each oasis in this land could also be considered as a rectangle which was parallel to the 
coordinate axes. The equation of the dividing line was like x = n, and n must be an integer. If the 
dividing line split an oasis, then Wei owned the western part and Huo owned the eastern part. Please 
help Emperor Wu to find out how to draw the dividing line. 
Input 
The first line of the input is an integer K meaning that there are K (1 ≤ K ≤ 15) test cases. 
For each test case: 
The first line is an integer R, indicating that the land’s right top corner was at (R, R) (1 ≤ R ≤ 
1,000,000) 
Then a line containing an integer N follows, indicating that there were N (0 < N ≤ 10000) oases. 
Then N lines follow, each contains four integers L, T, W and H, meaning that there was an 
oasis whose coordinate of the left top corner was (L, T), and its width was W and height was H. 
(0 ≤ L, T ≤ R, 0 < W, H ≤ R). No oasis overlaps. 
Output 
For each test case, print an integer n, meaning that Emperor Wu should draw a dividing line whose 
equation is x = n. Please note that, in order to satisfy the rules, Emperor might let Wei get the whole 
land by drawing a line of x = R if he had to. 
Sample Input 
2 
1000 
2 
1 1 2 1 
5 1 2 1 
1000 
1 
1 1 2 1 
Sample Output 
5 
2

题意:沙漠中有许多块矩形水源,水源不相交,问能否找到一根中轴线,使得轴线左边的水源面积大于等于右边的水源面积。在满足两个面积之差最小的情况下,使得轴线靠近右端点

用二分法求,否则时间超限

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int n;
struct point{
int x,y,w,h;
};
point a[];
/*bool cmp(point p,point q){
return p.x<q.x;
}*/
ll cal(int x){
ll sum = ;
for(int i=;i<n;i++){
if(a[i].x < x){
sum += (ll)( min( (a[i].w+a[i].x),x) - a[i].x) * a[i].h;
}
}
return sum;
}
int main(){
int T,R,w,h;
ll total;
while(cin >> T){
while(T--){
total = ;
cin >> R;
cin >> n;
for(int i=;i<n;i++){
cin >> a[i].x >> a[i].y >> a[i].w >> a[i].h;
total += (ll)a[i].h*a[i].w;//注意每次都要取long long 否则答案错误 }
// sort(a,a+n,cmp);
int l,r,mid;
ll tmp;
l = ,r = R;
while(l<r){
mid = (r+l)/;
tmp = cal(mid);
if(*tmp<total){
l = mid + ;
}else r = mid;
}
tmp = cal(r);
while(cal(r) == tmp && r<=R){
r ++;
}
cout << r- << endl;
}
}
return ;
}

2015北京区域赛 Xiongnu's Land的更多相关文章

  1. 2015北京区域赛 Mysterious Antiques in Sackler Museum 几何基础+思维

    题意是,选出三个,看看是否可以凑成一个新的矩形. #include<bits/stdc++.h> using namespace std; struct node { ]; }a[]; b ...

  2. 2015北京网络赛 D-The Celebration of Rabbits 动归+FWT

    2015北京网络赛 D-The Celebration of Rabbits 题意: 给定四个正整数n, m, L, R (1≤n,m,L,R≤1000). 设a为一个长度为2n+1的序列. 设f(x ...

  3. 2015北京网络赛 J Scores bitset+分块

    2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...

  4. 2015北京网络赛 Couple Trees 倍增算法

    2015北京网络赛 Couple Trees 题意:两棵树,求不同树上两个节点的最近公共祖先 思路:比赛时看过的队伍不是很多,没有仔细想.今天补题才发现有个 倍增算法,自己竟然不知道.  解法来自 q ...

  5. HDU5556 Land of Farms(二分图 2015 合肥区域赛)

    容易想到将问题转化为求图的独立数问题 ,但求一般图的独立集是一个NPC问题,需要一些转化. 状态压缩,枚举每个上古农场是否选择,然后将剩下的新农场根据i + j奇偶性分为x , y集. 结果为 max ...

  6. 2017 ACM-ICPC 北京区域赛记录

    ------------------------------------------------------------------------------ 出发日 拖着一个大箱子走是真的累. 下午三 ...

  7. 2015 北京网络赛 C Protecting Homeless Cats hihoCoder 1229 树状数组

    题意:求在平面上 任意两点连线,原点到这个点的距离小于d的点对有多少个,n=200000; 解: 以原点为圆心做一个半径为d的圆,我们知道圆内的点和园内以外的点的连线都是小于d的还有,圆内和园内的点联 ...

  8. 2015沈阳区域赛Meeting(最短路 + 建图)

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  9. Hiho coder 1236 2015 北京网络赛 Score

    五维偏序..一开始被吓到了,后来知道了一种BITSET分块的方法,感觉非常不错. 呆马: #include <iostream> #include <cstdio> #incl ...

随机推荐

  1. 如何思考博弈dp

    两个人的规则是否一致 若仅仅是先后的差别 我们可用dp解决一般思考一个子状态 对于当前的那个状态 我们进行什么样的操作 已知什么

  2. 教老婆学Linux运维(一)初识Linux

    零.前言 之一 为什么写这个系列?为什么是Linux? 老婆自从怀孕以后,辞职在家待了好几年了,现在时常感觉与社会脱节.所以想找个工作. 做了多年程序员,有点人脉也都基本是在IT圈子里,只能帮忙找找I ...

  3. java并发编程(九)----(JUC)CyclicBarrier

    上一篇我们介绍了CountDownlatch,我们知道CountDownlatch是"在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待",即CountDownL ...

  4. HBuilderX使用Vant组件库

    HBuilderX使用Vant组件库 HBuilderX是一款由国人开发的开发工具,其官网称其为轻如编辑器.强如IDE的合体版本.但是官方的社区中关于Vant组件的安装大多都是针对微信小程序开发安装V ...

  5. RE最全面的正则表达式----字符验证

    二.校验字符的表达式汉字:^[一-彪]{0,}$英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字 ...

  6. Opengl_入门学习分享和记录_03_渲染管线(二)再谈顶点着色器以及顶点属性以及属性链接

    ---恢复内容开始--- 写在前面的废话:岂可修!感觉最近好忙啊,本来今天还有同学约我出去玩的.(小声bb) 正文开始:之前已经编译好的着色器中还有一些问题,比如 layout(location=0) ...

  7. 洛谷 P2572 [SCOI2010]序列操作

    题意简述 维护一个序列,支持如下操作 把[a, b]区间内的所有数全变成0 把[a, b]区间内的所有数全变成1 把[a,b]区间内所有的0变成1,所有的1变成0 询问[a, b]区间内总共有多少个1 ...

  8. ThreadLocal中优雅的数据结构如何体现农夫山泉的广告语

    本篇文章主要讲解 ThreadLocal 的用法和内部的数据结构及实现.有时候我们写代码的时候,不太注重类之间的职责划分,经常造出一些上帝类,也就是什么功能都往这个类里放.虽然能实现功能但是并不优雅且 ...

  9. 二、Ansible的Ad-hoc介绍篇

    一.什么是Ad-hoc 称为临时命令,简单说,就是在命令行界面,直接通过一条ansible命令,去指定主机执行指定指令,功能有限 例如:ansible localhost -m command -a ...

  10. vs中的system指令

    vs中的system指令 system(“命令语句”);必须要用到头文件include<stdio.h> system里可以加许多指令 取消关机   shutdown -a 关机   sh ...