【BZOJ-1857】传送带 三分套三分
1857: [Scoi2010]传送带
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 1077 Solved: 575
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
100 0 100 100
2 2 1
Sample Output
HINT
对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10
Source
Solution
三分法,用于求单峰函数的极值问题,思路很好想
给定左右端点L,R;找出两个三等分点M1,M2(L<=M1<=M2<=R),如果M1比M2更优,则L=M1,否则R=M2
这道题,首先,关系很好找,发现是单峰函数,那么三分找最值即可
不过这里的话用到三分套三分,也非常好理解
对于外层三分出的M1,M2,如果比较大小,需要内部再进行三分来确定,这就是三分套三分
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int read()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
#define eps 1e-3
int Ax,Ay,Bx,By,Cx,Cy,Dx,Dy,P,Q,R;
double dist(double x1,double y1,double x2,double y2)
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
double Calc(double X,double Y)
{
double Lx=Cx,Ly=Cy,Rx=Dx,Ry=Dy;
while (fabs(Rx-Lx)>eps || fabs(Ry-Ly)>eps)
{
double Mx1=Lx+(Rx-Lx)/,My1=Ly+(Ry-Ly)/,Mx2=Lx+(Rx-Lx)/*,My2=Ly+(Ry-Ly)/*;
double LL=dist(Ax,Ay,X,Y)/P+dist(X,Y,Mx1,My1)/R+dist(Mx1,My1,Dx,Dy)/Q;
double RR=dist(Ax,Ay,X,Y)/P+dist(X,Y,Mx2,My2)/R+dist(Mx2,My2,Dx,Dy)/Q;
if (LL>RR) Lx=Mx1,Ly=My1;
else Rx=Mx2,Ry=My2;
}
return dist(Ax,Ay,X,Y)/P+dist(X,Y,Lx,Ly)/R+dist(Lx,Ly,Dx,Dy)/Q;
}
int main()
{
Ax=read(); Ay=read(); Bx=read(); By=read();
Cx=read(); Cy=read(); Dx=read(); Dy=read();
P=read(); Q=read(); R=read();
double Lx=Ax,Ly=Ay,Rx=Bx,Ry=By;
while (fabs(Rx-Lx)>eps || fabs(Ry-Ly)>eps)
{
double Mx1=Lx+(Rx-Lx)/,Mx2=Lx+(Rx-Lx)/*,My1=Ly+(Ry-Ly)/,My2=Ly+(Ry-Ly)/*;
double LL=Calc(Mx1,My1),RR=Calc(Mx2,My2);
if (LL>RR) Lx=Mx1,Ly=My1;
else Rx=Mx2,Ry=My2;
}
printf("%.2lf\n",Calc(Lx,Ly));
return ;
}
我会说因为变量重名WA了3发吗....A Sad Story...
【BZOJ-1857】传送带 三分套三分的更多相关文章
- Bzoj 1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- BZOJ 1857 传送带 (三分套三分)
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...
- 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
- 【BZOJ1857】传送带(分治经典:三分套三分)
点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...
- loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
- #10017 传送带(SCOI 2010)(三分套三分)
[题目描述] 在一个 2 维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段 AB 和线段 CD.lxhgww 在 AB上的移动速度为 P ,在 CD 上的移动速度为 Q,在平 ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- [BZOJ 1857] 传送带
Link: BZOJ 1857 传送门 Solution: 首先中间的两个拐点$C,D$肯定都在传送带$A,B$上 接下来感性发现固定点A/C,另一个点C/D时间随位置的变化为单峰函数 这样就是三分套 ...
随机推荐
- Centos5.8 安装SVN并配置HTTP访问
安装 svn sudo yum install subversion 测试 svn --version 安装 httpd 的 svn 模块 sudo yum install mod_dav_svn 前 ...
- PAT 1015. 德才论 (25)
宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...
- (原创)mybatis学习一,夯实基础
一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...
- 推薦使用 Microsoft Anti-Cross Site Scripting Library v3.1
原文链接:http://blog.miniasp.com/post/2009/09/27/Recommand-Microsoft-Anti-XSS-Library-V31.aspx 雖然我之前已經寫過 ...
- Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
- Alpha版本发布说明
软件发布的同时,在团队博客上写一个发布说明 ▪ 列出这一版本的新功能 ▪ 这一版本修复的缺陷 ▪ 对运行环境的要求 ▪ 安装方法 ▪ 描述系统已知的问题和限制 ...
- 模块度与Louvain社区发现算法
Louvain算法是基于模块度的社区发现算法,该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构,其优化目标是最大化整个社区网络的模块度. 模块度(Modularity) 模块度是评估一个社 ...
- Theano2.1.17-基础知识之剖析theano的函数
来自:http://deeplearning.net/software/theano/tutorial/profiling.html Profiling Theano function note:该方 ...
- 学习SQLite之路(二)
下面就是真正关于数据库的一些知识了: 20160614更新 参考: http://www.runoob.com/sqlite/sqlite-tutorial.html 1. SQLite创建表: 基本 ...
- .Net下一个类型转换神器
引言 类型转换经常遇到,最常用的应该是string类型转换为其它基元类型,常见于http参数类型转换.Convert静态类的Convert.ChangeType()方法可以把实现IConvertibl ...