AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)
题意:给n个点的起始坐标以及他们的行走方向,每一单位时间每个点往它的方向移动一单位。问最小能包围所有点的矩形。
解法:看到题目求极值,想了想好像可以用三分法求极值,虽然我也不能证明面积是个单峰函数。
尝试交了一发结果73组数据WA了1组数据,看起来似乎三分法是对的,但是至今还没找到哪个细节错了qwq,先记录下来。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
const int INF=0x3f3f3f3f;
const double eps=1e-;
int n,m,x[N],y[N];
char d[N][]; double xmax,xmin,ymax,ymin;
void chg(double x,double y) {
xmax=max(xmax,x); xmin=min(xmin,x);
ymax=max(ymax,y); ymin=min(ymin,y);
} double calc(double t) {
xmax=-INF,xmin=INF,ymax=-INF,ymin=INF;
for (int i=;i<=n;i++) {
if (d[i][]=='R') chg(x[i]+t,y[i]);
if (d[i][]=='L') chg(x[i]-t,y[i]);
if (d[i][]=='U') chg(x[i],y[i]+t);
if (d[i][]=='D') chg(x[i],y[i]-t);
}
return (double)(xmax-xmin)*(ymax-ymin);
} int main()
{
cin>>n;
for (int i=;i<=n;i++) scanf("%d%d%s",&x[i],&y[i],d[i]);
double l=,r=1e8, lm, rm;
while(r-l>eps) {
lm = l+(r-l)/;
rm = lm+(r-lm)/;
if(calc(lm) < calc(rm)) r = rm;
else if(calc(lm) == calc(rm)) r=rm, l=lm;
else l = lm;
}
printf("%.10lf\n",calc(l));
return ;
}
AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)的更多相关文章
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- ABC130 Task F. Minimum Bounding Box
题目链接 题解 最小的 bounding box 一定可以在四个时间段的最左端点和最右端点之间取到. 举例言之,设四个时间段分别是 (2, 5), (7, 10), (4, 9), ( 10, 20) ...
- AtCoder Beginner Contest 261 F // 树状数组
题目链接:F - Sorting Color Balls (atcoder.jp) 题意: 有n个球,球有颜色和数字.对相邻的两球进行交换时,若颜色不同,需要花费1的代价.求将球排成数字不降的顺序,所 ...
- AtCoder Beginner Contest 260 F - Find 4-cycle
题目传送门:F - Find 4-cycle (atcoder.jp) 题意: 给定一个无向图,其包含了S.T两个独立点集(即S.T内部间的任意两点之间不存在边),再给出图中的M条边(S中的点与T中的 ...
- AtCoder Beginner Contest 253 F - Operations on a Matrix // 树状数组
题目传送门:F - Operations on a Matrix (atcoder.jp) 题意: 给一个N*M大小的零矩阵,以及Q次操作.操作1(l,r,x):对于 [l,r] 区间内的每列都加上x ...
- AtCoder Beginner Contest 249 F - Ignore Operations // 贪心 + 大根堆
传送门:F - Keep Connect (atcoder.jp) 题意: 给定长度为N的操作(ti,yi). 给定初值为0的x,对其进行操作:当t为1时,将x替换为y:当t为2时,将x加上y. 最多 ...
- AtCoder Beginner Contest 247 F - Cards // dp + 并查集
原题链接:F - Cards (atcoder.jp) 题意: 给定N张牌,每张牌正反面各有一个数,所有牌的正面.反面分别构成大小为N的排列P,Q. 求有多少种摆放方式,使得N张牌朝上的数字构成一个1 ...
- AtCoder Beginner Contest 133 F Colorful Tree
Colorful Tree 思路: 如果强制在线的化可以用树链剖分. 但这道题不强制在线,那么就可以将询问进行差分,最后dfs时再计算每个答案的修改值, 只要维护两个数组就可以了,分别表示根节点到当前 ...
- AtCoder Beginner Contest 171-175 F
171 F - Strivore 直接把初始字符当成隔板,统计的方案数会有重复 为了避免重复情况,规定隔板字母尽可能最后出现,即在隔板字母后面不能插入含隔板字母的字符串 所以在隔板字母后插入的字符只有 ...
随机推荐
- java ArrayList存储基本类型
package java06; /* 如果希望像集合ArrayList中存储基本数据类型数据,必须使用基本数据类型对应的“包装类” 基本数据类型 包装类(引用类型,包装类都位于java.lang包下 ...
- D3笔记01——D3简介与安装
1 D3简介 发布于2011年,全称Data-Driven Documents,直译为“数据驱动的文档”. 简单概括为一句话:D3是一个Javascript的函数库,是用来做数据可视化的.文档指DOM ...
- 我们为什么选择Ceph来建立块存储
我们为什么选择Ceph来建立块存储?国内知名黑客组织东方联盟是这样回答的,卷管理器的大小和增长受到管理程序的驱动器补充的限制,与其他Droplet共享.一旦Droplet被摧毁,储存就会被释放.术语“ ...
- python已处理的异常
字符串比较中,如果一个字符串有内容,另一个没有内容,python不会报错,而是认为两个字符串不相同如 a=" b="" if a[4:5]==b[4:5]: print( ...
- 英语单词custom
custom 来源——xshell快捷键 翻译 n. 习惯,惯例:风俗:海关,关税:经常光顾:[总称](经常性的)顾客 adj. (衣服等)定做的,定制的 高中 | 初中 词源 英语单词custom含 ...
- Java反射学习-4 - 反射调用方法
反射调用方法: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method ...
- python实现计时器(装饰器)
1.写一个装饰器,查看函数执行的时间 import time # 装饰器run_time,@run_time加在谁头上,谁就是参数fundef run_time(fun): start_time = ...
- (一)arm交叉编译工具链准备
1.背景 arm机器一般因为资源问题进行编译会影响开发速度,而且很多时候因为资源不够而无法完成编译工作.因此,需要在执行机上进行交叉编译,即使用x86或其他架构机器基于交叉编译工具编译出在arm上可以 ...
- 取余运算 C和python的区别
今天看书发现python与C的负数取余运算结果不同,查资料理解. 取余运算的算法是相同的 r = a- n*(a/n) n!=0 r是余数,a是被除数,n是除数.n不能为0,否则都会报错. 负数 ...
- left、pixelLeft、posLeft的区别
yexj00.style.pixelLeft=50yexj00.style.left=50pxyexj00.style.posLeft=50he.style.pixelLeft=39he.style. ...