hdoj 3400 三分】的更多相关文章

两次三分 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; int x[5],y[5],v[5]; double cal(double x1,double x2,double y1,double y2) { double tmp=(x1-x2)*(x1-x2); tmp+=(y1-y2)*(y1-y2); return…
hdu2899 : 水提,直接三分,事实上求导后二分也能够. #include<iostream> #include<cstdio> using namespace std; double y; double inline f( long double x) { return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x; } int main() { int T;scanf("%d",&T); whil…
Line belt Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一个人在线段AB的A点出发,走向D点,其中,人在线段AB上的速度为P, 在线段CD上的速度为Q,在其他地方的速度为R,求人从A点到D点的最短时间. analyse: 经典的三分套三分. 首先在AB线段上三分,确定一个点,然后再在CD上三分,确定第二个点,计算出answer.也就是嵌套的三分搜索. Ti…
http://acm.split.hdu.edu.cn/showproblem.php?pid=3400 题意: 有两条带子ab和cd,在ab上的速度为p,在cd上的速度为q,在其它地方的速度为r.现在计算从a出发到达d的最少花费时间. 思路: 分别在ab和cd两段线路上找一个转折点,然后就是由这三段路组成. 设ab上的线路长度为x,cd上的为y,其余为z. 那么总的时间就是,分开来考虑,,F(x)是个单调递增函数,G(y,z)是个凹性函数. 那么总的T函数还是一个凹性函数,那么就可以三分了,对…
题目传送门 /* 三分:凹(凸)函数求极值 */ #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; ; const int INF = 0x3f3f3f3f; const double EPS = 0.0000000001; struct F { double a, b, c; }f[MAXN]; int n; dou…
HDU 3400 Line belt (三分再三分) ACM 题目地址:  pid=3400" target="_blank" style="color:rgb(0,136,204); text-decoration:none">HDU 3400 Line belt 题意:  就是给你两条线段AB , CD .一个人在AB以速度p跑,在CD上以q跑,在其它地方跑速度是r.问你从A到D最少的时间. 分析:  先三分AB上的点.再三分CD上的点就可以. …
从A出发到D,必定有从AB某个点E出发,从某个点F进入CD 故有E,F两个不确定的值. 在AB上行走的时间   f = AE / p 在其他区域行走的时间 g = EF / r 在CD上行走的时间   h = FD / q 总时间 T = f + g + h 当E确定时,T1 = g + h + C   此时g时一个先减后增的凹函数,h是一个单调递减的凹函数,根据凹函数的性质,故T1是一个凹函数 反之亦然,故需要三分确定其中一个点的位置,再三分另一个点的位置. #include<stdio.h>…
题意:给n个点,以这n个点为圆心画圆,使得所有的圆与其相邻的圆相切. 求n个圆最小的面积和. 分析:很容易想到确定了其中一个圆的半径之后,其他的圆的半径也能随之确定了. 画一画三个点的和四个点的,会发现有区别. 三个点的你会发现你稍微画次一点就不能满足 与相邻的都相切的条件了 而四个点的,很轻易就能画出来 所以可以分成两类:奇数个点的 和 偶数个点的 奇数个点的因为答案唯一,因此直接$\frac{R}{2}$就行了 至于偶数个的 因为圆的半径和面积是成单峰函数的.因此可以对半径三分来求解. 其中…
三分. #include <cstdio> #include <cstring> #include <cmath> typedef struct { double x, y; } Point_t; Point_t A, B, C, D; const double eps = 1.0e-8; double P, Q, R; double dist(Point_t a, Point_t b) { return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-…
题目链接 Line belt Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2862    Accepted Submission(s): 1099 Problem Description In a two-dimensional plane there are two line belts, there are two segment…