CodeForces 385 D.Bear and Floodlight 状压DP
2024-10-21 12:59:06
枚举灯的所有可能状态(亮或者不亮)(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 ;
}
/******************** ********************/
最新文章
- ExecutorService线程池应用
- cocos2dx 3.x(常见的46种动作)
- win10 + VS2015 + EF6 + MySQL
- BZOJ1230 [Usaco2008 Nov]lites 开关灯
- Eclipse安装SVN插件的方法( 手动安装)
- UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
- C#_dropdownlist_3
- Android新浪微博客户端(七)——ListView中的图片异步加载、缓存
- tengine rpm制作
- iOS开发之UIWebView自动滑动到顶部-备
- CSS注意事项
- Vim 命令图解-Gvim使用笔记
- 关于eclipse安装Genymotion插件的方法
- Linux 的基本操作(系统的远程登录)
- 【Code Chef】April Challenge 2019
- 当有多个form表单请求时如何处理?
- 异步查询json传日期格式到前台,变成了时间戳的格式
- .Net执行cmd命令
- Django 博客项目01 数据库设计与验证码校验+Ajax登录
- Syncthing搭建
热门文章
- 我的Android进阶之旅------>android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- android studio中取消关联git
- keras中 LSTM 的 [samples, time_steps, features] 最终解释
- Android用surface直接显示yuv数据(三)
- sublime txet 3 python 开发环境安装配置
- 转:用unix socket加速php-fpm、mysql、redis的连接
- 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车
- 从零到一创建ionic移动app:基础开发环境搭建
- Spring Data Jpa示例(IntelliJ maven项目)
- cocos2d-x与着色器设计--入门篇(游云凌天原创)