zoukankan      html  css  js  c++  java
  • luogu2625 豪华游轮

    题目

    luogu2625

    题解

    若无角度限制,最远距离就是先向前走完forward,再转180度走backward,有角度限制时,旋转角度越接近180,距离最远(已知三角形两边,夹角越大,第三边越大)

    用背包扫出所有可能的角度

    代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #define pi 3.1415926535898
    using namespace std; 
    
    char s[10];
    int n,a[55],t,Forward,Backward;
    bool f[55][365];
    
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%s%d",s,&t);
    		if(s[0]=='f') Forward+=t;
    		else if(s[0]=='b') Backward+=t;
    		else if(s[0]=='l') a[++a[0]]=t%360;
    		else a[++a[0]]=-(t%360);
    	}
    	f[0][0]=1;
    	for(int i=1;i<=a[0];i++)
    		for(int j=0;j<360;j++)
    		f[i][j]=(f[i-1][(j+a[i]+360)%360]|f[i-1][j]);
    	int dif=180;
    	for(int j=0;j<360;j++)
    		if(f[a[0]][j]&&abs(j-180)<dif) dif=abs(j-180);
    	double ans=sqrt((double)Forward*Forward+(double)Backward*Backward-(double)2*Forward*Backward*(cos((double)(180-dif)*pi/180)));//余弦定理
    	printf("%lf",ans);
    	return 0;
    }
  • 相关阅读:
    tcpdump命令
    浅谈  curl命令
    MongoDB下rs.status()命令
    Device mapper存储方式
    top命令
    cat命令汇总整理
    centos7搭建nginx日志
    CentOS7 防火墙(firewall)的操作命令(转)
    服务器的硬件组成
    shell随机生成10个文件
  • 原文地址:https://www.cnblogs.com/XYZinc/p/7593703.html
Copyright © 2011-2022 走看看