【noiOJ】p8208
03:切分矩形组
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
给定若干个平行于坐标轴的互不重叠的矩形,矩形的顶点都是整点。要求画一根平行于y轴的直线x=k(k是整数) ,使得这些矩形落在直线两边面积之差最小。
注意:若直线穿过一个矩形,将会把它切成两个部分,分属左右两侧。
- 输入
- 第一行是整数n,表示有n个矩形(0 < n <= 10000)。
接下来是n行,每行表示一个矩形。每行有4个整数left,top,w,h 分别代表矩形左上角横坐标,矩形左上角纵坐标,矩形宽度,矩形高度。0 <= left,top <= 1000000, 0 <= w,h <= 100000。 - 输出
- 输出使得直线 x= k 两边所包含的矩形面积差最小的k。如果有多条直线满足要求,输出最小的k。
- 样例输入
-
2
1 1 100 100
1000 1 100 100 - 样例输出
-
101
代码愚蠢,对二分理解不深刻。#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
long long sum,besum;
int leftt[],w[],h[],top[];
void ssum(long long mid)
{
int i;
for (i=;i<=n;i++)
{
if ((leftt[i]+w[i])<=mid)
sum+=(w[i]*h[i]);
if (leftt[i]>=mid)
sum-=(w[i]*h[i]);
if (leftt[i]<mid && (leftt[i]+w[i])>mid)
sum+=((mid-leftt[i])*(h[i])-(leftt[i]+w[i]-mid)*(h[i]));
}
}
int main()
{
long long l,r,mid;
scanf("%d",&n);
int i;
for (i=;i<=n;i++)
scanf("%d%d%d%d",&leftt[i],&top[i],&w[i],&h[i]);
l=;r=;
while (l<r)
{
mid=(l+r)/;
sum=;
ssum(mid);
besum=sum;
if (sum>= || (abs(sum)==abs(besum) && sum>))
r=mid;
else
l=mid;
if (l+==r)
{
long long xx,yy;
sum=;
ssum(l);
xx=sum;
sum=;
ssum(r);
yy=sum;
if (abs(xx)<=abs(yy))
break;
else
l=r;
break;
}
}
printf("%lld",l);
return ;
}
【noiOJ】p8208的更多相关文章
- 【noiOJ】P1996
1996:登山 查看 提交 统计 提问 总时间限制: 5000ms 内存限制: 131072kB 描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序 ...
- 【noiOJ】p1759
1759:最长上升子序列 查看 提交 统计 提问 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我 ...
- 【noiOJ】p1481
1481:Maximum sum 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 Given a set of n integers: A={a1, a2,. ...
- 【noiOJ】p6253
t6253:用二分法求方程的根 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 用二分法求下面方程在(-10, 10)之间的一个根. 2x3- 4x2+ 3x ...
- 【noiOJ】p1794
t1794:集合加法 查看 提交 统计 提问 总时间限制: 3000ms 内存限制: 65536kB 描述 给出2个正整数集合A = {pi | 1 <= i <= a},B = {q ...
- 【noiOJ】p1776
t1776:木材加工 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给 ...
- 【noiOJ】p8210
10:河中跳房子 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石.这项激动人心 ...
- 【noiOJ】p7939
09:膨胀的木棍 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n*C)*L,其中C是热 ...
- 【noiOJ】p7914(..)
08:不重复地输出数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入n个数,从小到大将它们输出,重复的数只输出一次.保证不同的数不超过500个. 输入 ...
随机推荐
- 【mysql创建用户|删除用户|修改用户权限|常用命令】
原文链接:http://blog.csdn.net/leili0806/article/details/8573636 1. CREATE USER 语法: CREATE USER 'us ...
- SQL在INNER JOIN时,也可以将子查询加入进来
这个语法有点神奇,记下. 但觉得用处有限吧. mysql> SELECT a.account_id, a_cust_id, a.open_date, a.product_cd -> FRO ...
- spring 集成 log4j 配置
在web.xml中增加如下代码: <context-param> <param-name>log4jConfigLocation</param-name> < ...
- 【leetcode】Candy
题目描述: There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- PMP 第三章 单个项目的项目管理标准
1 项目管理五大过程组分别是什么? 启动过程组 规划过程组 执行过程组 监控过程组 收尾过程组 2 启动项目组是干什么?包含哪些过程?每个阶段都需要启动吗? 启动过程组:获得授权,定义一个新项目或现有 ...
- Linux文本比较-diff&awk
最近为了完成工作,需要将两个文件A.old和A进行比较,然后将A中新增加的部分保存到A中,其他部分删除.经过查找相关资料,发现有两种比较好的方法. 1. 使用diff命令 diff old.file ...
- opengl典型例程立方体投影与地图绘制
立方体投影 http://www.cnblogs.com/opengl/p/3790450.html 地图绘制 http://www.cnblogs.com/opengl/p/3790354.html
- 对于JSP的调试
在eclipse中调试JSP 我换了图片但是网页中的图片却不变化 我删了工程里的图片还是没用 看了一下Tomcat根目录..貌似也是没有的.. 最后我考虑换了HTML中图片的名字..并且更改了替换的图 ...
- 【java 断点续传】
模拟 断点续传 首先,先读取word文件的 一部分 package com.sxd.readLines; import java.io.File; import java.io.FileInputSt ...
- Android拓展系列(9)--Android视频录制screenrecord命令
在Android4.4 Kitkat上集成了一个比较好用的视频录制功能.参考:http://forums.androidcentral.com/android-4-4-kitkat/329674-ho ...