枚举灯的所有可能状态(亮或者不亮)(1<<20)最多可能的情况有1048576种

dp【i】表示 i 状态时灯所能照射到的最远距离(i 的二进制中如果第j位为0,则表示第j个灯不亮,否则就是亮)

当i&(1<< j)时代表第i个状态灯j不亮,此时可由状态i转移到状态 i ^ ( 1 << j) 即dp[(i^(1<<j))]=max(dp[(i^(1<<j))],get(dp[i],j))

get是从dp【i】的位置开始第j个灯所能照亮的最长距离

求距离时用反三角函数比较快

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; double x[N],y[N],a[N],l,r;
double dp[(<<)+];
double get(double x0,int i)
{
double te=atan((r-x[i])/y[i]);
te=min(te,atan((x0-x[i])/y[i])+a[i]);
return x[i]+y[i]*tan(te);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout<<setiosflags(ios::fixed)<<setprecision();
int n;
cin>>n>>l>>r;
r-=l;
for(int i=;i<n;i++)
{
cin>>x[i]>>y[i]>>a[i];
x[i]-=l;
a[i]=a[i]/*pi;
}
memset(dp,,sizeof dp);
for(int i=;i<(<<n);i++)
for(int j=;j<n;j++)
if((i&(<<j))==)
dp[(i^(<<j))]=max(dp[(i^(<<j))],get(dp[i],j));
cout<<dp[(<<n)-]<<endl;
return ;
}
/******************** ********************/

最新文章

  1. ExecutorService线程池应用
  2. cocos2dx 3.x(常见的46种动作)
  3. win10 + VS2015 + EF6 + MySQL
  4. BZOJ1230 [Usaco2008 Nov]lites 开关灯
  5. Eclipse安装SVN插件的方法( 手动安装)
  6. UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
  7. C#_dropdownlist_3
  8. Android新浪微博客户端(七)——ListView中的图片异步加载、缓存
  9. tengine rpm制作
  10. iOS开发之UIWebView自动滑动到顶部-备
  11. CSS注意事项
  12. Vim 命令图解-Gvim使用笔记
  13. 关于eclipse安装Genymotion插件的方法
  14. Linux 的基本操作(系统的远程登录)
  15. 【Code Chef】April Challenge 2019
  16. 当有多个form表单请求时如何处理?
  17. 异步查询json传日期格式到前台,变成了时间戳的格式
  18. .Net执行cmd命令
  19. Django 博客项目01 数据库设计与验证码校验+Ajax登录
  20. Syncthing搭建

热门文章

  1. 我的Android进阶之旅------>android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
  2. android studio中取消关联git
  3. keras中 LSTM 的 [samples, time_steps, features] 最终解释
  4. Android用surface直接显示yuv数据(三)
  5. sublime txet 3 python 开发环境安装配置
  6. 转:用unix socket加速php-fpm、mysql、redis的连接
  7. 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车
  8. 从零到一创建ionic移动app:基础开发环境搭建
  9. Spring Data Jpa示例(IntelliJ maven项目)
  10. cocos2d-x与着色器设计--入门篇(游云凌天原创)