洛谷2625 豪华游轮

来源:互联网 发布:灸大夫软件好用吗 编辑:程序博客网 时间:2024/04/27 11:28

题目描述

有一条豪华游轮(其实就是条小木船),这种船可以执行4种指令:

right X : 其中X是一个1到719的整数,这个命令使得船顺时针转动X度。

left X : 其中X是一个1到719的整数,这个命令使得船逆时针转动X度。 forward X :
其中X是一个整数(1到1000),使得船向正前方前进X的距离。

backward X : 其中X是一个整数(1到1000),使得船向正后方前进X的距离。

随意的写出了n个命令,找出一个种排列命令的方法,使得船最终到达的位置距离起点尽可能的远。 输入输出格式 输入格式:

第一行一个整数n(1 <= n <= 50),表示给出的命令数。

接下来n行,每行表示一个命令。

输出格式:

一个浮点数,能够走的最远的距离,四舍五入到6位小数。

可以发现,最大的方法就是先朝一个方向走,然后转过一个尽可能接近180度的角度,然后反方向走【也就是尽量接近走直线】。
角度可以背包求出,然后用余弦定理。

#include<cstdio>#include<cstring>#include<cmath>const double pi=3.14159265358979;const int mx=360;int a[55];bool b[55][400];int main(){    int i,j,k,m=0,m1,m2,n,n1,n2,p,q,x,y,z,tot=0;    double frt=0,bck=0,agl;    char s[20];    scanf("%d",&n);    for (i=1;i<=n;i++)    {        scanf("%s%d",s+1,&x);        if (s[1]=='r')          a[++m]=x;        if (s[1]=='l')          a[++m]=2*mx-x;        if (s[1]=='f')          frt+=x;        if (s[1]=='b')          bck+=x;    }    b[0][0]=1;    for (i=1;i<=m;i++)      for (j=0;j<mx;j++)        if (b[i-1][j])          b[i][j]=b[i][(j+a[i])%mx]=1;    for (i=0;1;i++)      if (b[m][mx/2+i]||b[m][mx/2-i])        break;    agl=mx/2-i;    printf("%.6f\n",sqrt(frt*frt+bck*bck-2*frt*bck*cos(agl/180.0*pi)));}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq邮箱里的文件过期了怎么办 163邮箱里的文件过期了怎么办 做人事的给员工漏交社保了怎么办 公司漏交了员工一个月的社保怎么办 小米4c能充电不能开机怎么办 小米手机关机开不开机该怎么办 小米5s关机开不开机怎么办 老板跑路了员工社保还挂着怎么办 红米5连wifi很慢怎么办 电脑百度网盘下载速度慢怎么办 新手机与旧手机同步了怎么办 百度网盘2t满了怎么办 魅族手机相册的密码忘了怎么办 手机百度网盘本地空间不足怎么办 百度网盘保存视频内存不够怎么办 别人的百度网盘链接打不开怎么办 百度网盘视频插件升级失败怎么办 退苹果id重新登陆照片没了怎么办 苹果升级后照片效果没了怎么办 360云盘个人云盘停止服务怎么办 小米手机账号掉了手机卡没了怎么办 百度网盘下载后不能注册怎么办 微信发出的文件无法撤回怎么办 微信群发错消息无法撤回怎么办 百度网盘登录要验证码怎么办 百度网盘备份记录怎么办能删掉 手机酷狗听歌耳机声音太小了怎么办 苹果6s微信通话声音变粗怎么办 千千静听多个列表合成一个了怎么办 别人用手机号注册了邮箱怎么办 微信身份信息验证未通过怎么办 快递地址填错了已经发到了怎么办 孩子威胁同学给她买东西吃怎么办 在超市买小孩米粉过期了怎么办 出口货物被海关扣了说仿牌怎么办 有一批仿牌被宁波海关查了怎么办 付了定金不想要车了怎么办 泥墙刮石灰上涂料现在刮腻子怎么办 月经最后一天同房了怎么办吃什么药 奶水太多了宝宝总是呛到了怎么办 婴儿刚吃完奶大量喷奶怎么办