2013湘潭赛 Hurry Up 三分算法
2013-05-14 00:27
295 查看
三分算法讲解
hurry up题目链接
用min函数和max函数写不过,自己手写比较函数通过了,貌似比赛也是这样的~~囧
最后就是 比较两条路线的路径最短,第二条路线是一条满足
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<stdlib.h>
using namespace std;
const double eps=1e-8;
struct node{
double x,y;
} ori,des,center;
double car,peo;
double dis(node a,node b){
return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double three_divide(){
node mid,midmid;
mid.y=0;
midmid.y=0;
double ans_mid,ans_midmid;
double left,right;
if(ori.x<des.x){
left=ori.x;
right=des.x;
}
else {
left=des.x;
right=ori.x;
}
while(right-left>eps){
mid.x=(left+right)/2; //三分算法的关键步骤
midmid.x=(mid.x+right)/2;
ans_mid=dis(ori,mid)/peo+dis(des,mid)/car;
ans_midmid=dis(ori,midmid)/peo+dis(des,midmid)/car;
if(ans_mid<ans_midmid) right=midmid.x;
else left=mid.x;
}
mid.x=left;
return dis(ori,mid)/peo+dis(des,mid)/car;
}
int main()
{
int n;
scanf("%d",&n);
while(n--){
scanf("%lf%lf%lf%lf%lf%lf",&ori.x,&ori.y,&des.x,&des.y,&peo,&car);
double ans1=dis(ori,des)/peo,ans2;
ans2=three_divide();
printf("%.2lf\n",ans1>ans2?ans2:ans1);
}
return 0;
}
hurry up题目链接
用min函数和max函数写不过,自己手写比较函数通过了,貌似比赛也是这样的~~囧
最后就是 比较两条路线的路径最短,第二条路线是一条满足
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<stdlib.h>
using namespace std;
const double eps=1e-8;
struct node{
double x,y;
} ori,des,center;
double car,peo;
double dis(node a,node b){
return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double three_divide(){
node mid,midmid;
mid.y=0;
midmid.y=0;
double ans_mid,ans_midmid;
double left,right;
if(ori.x<des.x){
left=ori.x;
right=des.x;
}
else {
left=des.x;
right=ori.x;
}
while(right-left>eps){
mid.x=(left+right)/2; //三分算法的关键步骤
midmid.x=(mid.x+right)/2;
ans_mid=dis(ori,mid)/peo+dis(des,mid)/car;
ans_midmid=dis(ori,midmid)/peo+dis(des,midmid)/car;
if(ans_mid<ans_midmid) right=midmid.x;
else left=mid.x;
}
mid.x=left;
return dis(ori,mid)/peo+dis(des,mid)/car;
}
int main()
{
int n;
scanf("%d",&n);
while(n--){
scanf("%lf%lf%lf%lf%lf%lf",&ori.x,&ori.y,&des.x,&des.y,&peo,&car);
double ans1=dis(ori,des)/peo,ans2;
ans2=three_divide();
printf("%.2lf\n",ans1>ans2?ans2:ans1);
}
return 0;
}
相关文章推荐
- 2013数据结构课程设计之便利店选址(暴力枚举或随机函数或三分)
- 浙江大华2013校园招聘笔试题软件算法类D卷
- 【笔试面试题】腾讯2013实习生面试算法题及参考答案
- 三分算法概念
- BZOJ 3168 Heoi2013 钙铁锌硒维生素 矩阵求逆+匈牙利算法
- 三分算法及利用三分算法求解二次函数问题
- 【算法】2013创新工场校园招聘笔试题--如何求出带环链表的入口节点
- [BZOJ3203]-[Sdoi2013]保护出题人-凸包+三分
- 三分算法
- HDU 4355 (三分算法基础)
- 紫书第八章-----高效算法设计(二分查找、尺取法/滑动窗口法、三分查找)
- 拥塞控制算法之Remy (2013 Sigcomm)
- 阿里巴巴2013实习生笔试题精选2道算法题
- 2013“嘉杰信息”杯ACM/ICPC湘潭多省程序设计竞赛暨湘潭市第五届大学生程序设计竞赛
- 三分算法--Codeforces Round #320 (Div. 2) E. Weakness and Poorness
- Hurry Up(三分)
- 三分算法
- [凸包 三分 数形结合] BZOJ 3203 [Sdoi2013]保护出题人
- 2013編程之美 集会 三分
- 2013湘潭赛 卡片重组