NOIP2016 愤怒的小鸟 [状压DP]
来源:互联网 发布:linux 进入mysql 编辑:程序博客网 时间:2024/04/30 14:33
预处理每两个鸟的斜率,然后枚举每个鸟的状态,复杂的
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const double eps=1e-10;int n,m,t,g;int f[20][20],dp[300000];double x[20],y[20];int main(){ scanf("%d",&t); while(t--){ double a,b; scanf("%d%d",&n,&m); for(register int i=0;i<n;++i)scanf("%lf%lf",&x[i],&y[i]); memset(f,0,sizeof(f)),memset(dp,0x3f,sizeof(dp)),dp[0]=0; for(register int i=0;i<n;++i){ for(register int j=i+1;j<n;++j){ a=(y[j]*x[i]-x[j]*y[i])/((x[j]-x[i])*x[i]*x[j]); b=(y[j]*x[i]*x[i]-y[i]*x[j]*x[j])/((x[i]-x[j])*x[i]*x[j]); if(a>=-eps)continue; for(register int k=i;k<n;++k) if(fabs(a*x[k]*x[k]+b*x[k]-y[k])<=eps)f[i][j]|=1<<k; } } for(register int s=0;s<(1<<n)-1;++s){ g=0; while(s&(1<<g))g++; dp[s|(1<<g)]=min(dp[s|(1<<g)],dp[s]+1); for(register int j=g;j<n;++j) dp[s|f[g][j]]=min(dp[s|f[g][j]],dp[s]+1); } printf("%d\n",dp[(1<<n)-1]); } return 0;}
阅读全文
0 0
- [NOIP2016][状压DP]愤怒的小鸟
- NOIP2016 愤怒的小鸟 [状压DP]
- Noip2016 愤怒的小鸟 【状压DP】
- NOIP2016 愤怒的小鸟 (状压DP)
- NOIP2016 [愤怒的小鸟] 状压DP
- NOIP2016愤怒的小鸟 题解报告 【状压DP】
- 【洛谷】2831 [Noip2016]愤怒的小鸟 状压DP
- 洛谷2831(NOIP2016)[愤怒的小鸟]--状压DP
- 【状压DP】UOJ#265 【NOIP2016】愤怒的小鸟
- [NOIP2016] 愤怒的小鸟
- NOIP2016愤怒的小鸟
- [NOIP2016]愤怒的小鸟
- 【NOIP2016】愤怒的小鸟
- NOIP2016 愤怒的小鸟
- NOIP2016 T6 愤怒的小鸟
- [noip2016]愤怒的小鸟 题解
- 【noip2016提高组day2T3】【愤怒的小鸟】状压dp转移时的集合包含
- noip2016 Day2 T3:愤怒的小鸟 (状压DP+二进制压位)
- js实现页面弹框效果
- Android View-measure
- caffe训练模型并预测图片类型
- NYOJ 40
- Python读取中文路径时的处理
- NOIP2016 愤怒的小鸟 [状压DP]
- CSDN-Markdown使用方法
- hdu 5673 线性求逆元+卡特兰数
- 谈谈个人网站的建立(四)—— 日志系统的建立
- 生产者消费者模式解决强耦合问题
- Android 在使用Intent跳转并传递对象参数时,出现Parcelable encountered IOException writing serializable object
- 验证中国的座机号的正则表达式
- 在Popupwindow布局中嵌套ScrollView,滑动内容时视图出现反复闪烁的问题
- mysql pdf