【NOIP 2016 提高组】愤怒的小鸟
来源:互联网 发布:王自如 罗永浩 知乎 编辑:程序博客网 时间:2024/05/17 06:04
Description
Solution
一题很显然的状压DP,
显然的转移是
优化:
1. 很显然两个点决定一条抛物线后,可以预处理还能打到那些点。
2. 贪心的想,既然一个点迟早要打,为何不现在就打了它,
复杂度:
Code
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef double db;const int N=20;int n,m,ans,m_;db a[N][2];int f[524300];int g[N][N];int er[20];int d[524300];bool OK(int q,int w,int e){ db A,t,B; db x1=a[q][0],x2=a[w][0]; db y1=a[q][1],y2=a[w][1]; t=x1/x2; A=(y1-t*y2)/(x1*x1-t*x2*x2); if(A>1e-6)return 0; B=(y1-A*x1*x1)/x1; x1=a[e][0]; y1=a[e][1]; if(y1<=A*x1*x1+B*x1+1e-6&&y1>=A*x1*x1+B*x1-1e-6)return 1; return 0;}int min(int q,int w){return q<w?q:w;}int main(){ freopen("angrybirds.in","r",stdin); freopen("angrybirds.out","w",stdout); int q,w,_; er[1]=1;fo(i,2,19)er[i]=er[i-1]<<1; scanf("%d",&_); while(_--) { scanf("%d%d",&n,&m_); fo(i,1,n)scanf("%lf%lf",&a[i][0],&a[i][1]); ans=1e9; if(m_==1)ans=n/3+2; fo(i,1,n-1) fo(j,i+1,n) { g[i][j]=er[i]; fo(k,j,n)if(OK(i,j,k))g[i][j]+=er[k]; } memset(f,127,sizeof(f)); f[0]=0; int s=1,t=1; d[1]=0; while(s<=t) { q=d[s++]; if(q==er[n+1]-1||f[q]>=ans)continue; for(w=1;q&er[w];w++); if(f[q+er[w]]>f[q]+1)f[q+er[w]]=f[q]+1,d[++t]=q+er[w]; fo(i,w+1,n) { int t1=g[w][i]&(er[n+1]-1-q); if(f[q+t1]>f[q]+1)f[q+t1]=f[q]+1,d[++t]=q+t1; } } printf("%d\n",f[er[n+1]-1]); } return 0;}
0 0
- 【NOIP 2016 提高组】愤怒的小鸟
- NOIP 2016 愤怒的小鸟
- NOIP-2016 愤怒的小鸟
- Noip 2016 愤怒的小鸟
- NOIP 2016 Day2 T3 愤怒的小鸟
- NOIP 2015 愤怒的小鸟
- 【NOIP2016提高组day2】愤怒的小鸟
- NOIP2016提高组day2 愤怒的小鸟
- 【NOIP2016提高组复赛】愤怒的小鸟
- 洛谷【P2831】愤怒的小鸟 (NOIP 2016 D2T3)
- [LUOGU]2831 愤怒的小鸟 [NOIP]2016 D2T3
- [NOIP] [状压DP] NOIP2016Day2 愤怒的小鸟
- noip提高组2014 飞扬的小鸟
- NOIP提高组2015 飞扬的小鸟
- NOIP 提高组 飞扬的小鸟
- Noip 2014 提高组 飞扬的小鸟
- uoj265【2016提高】愤怒的小鸟(状压dp)
- 愤怒的小鸟(NOIP2016提高组Day2T3)
- Step
- 【Android】Android五种数据传递方法汇总
- 2016年11月30日 angularJS input=file 绑定change事件
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- 设计模式学习笔记--迭代器模式
- 【NOIP 2016 提高组】愤怒的小鸟
- SQL 错误 [932] [42000]: ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB
- Android 笔记:关于gif动画
- 解决Winform程序在不同分辨率系统下界面混乱问题
- python学习笔记——实现收发Email
- vmware 虚拟机下使用nat模式,为ubuntu配置静态ip且有无网络都可以再本机windows下用xshell一类的工具连接
- Easy Application for U.S company
- PHP之——CentOS 6.5下搭建LAMP环境详细步骤
- 记事本运行JAVA程序