2017.7.28 愤怒的小鸟 思考记录
来源:互联网 发布:找到网络打印机 编辑:程序博客网 时间:2024/05/17 00:52
现在来看,这个noip的状压dp就不是很难了
先枚举抛物线(一个确定的,两个确定的)
再对每个抛物线枚举目标,把能打的压在一起
最后扫一遍抛物线,枚举状态出最优解即可
注意此题精度!设成0.00005只能过92分
需要设成0.0000005 (玄学?)
码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int f[1<<20],zt[50000],cnt,n,T,m;#define esp 0.0000005double x[20],y[20];int main(){scanf("%d",&T);while(T--){memset(f,0x6f,sizeof(f));memset(zt,0,sizeof(zt));cnt=0;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%lf%lf",&x[i],&y[i]);if(n==1){printf("1\n");continue;}for(int i=1;i<=n;i++){zt[++cnt]=(1<<(i-1));for(int j=i+1;j<=n;j++){double a=y[i]*x[j]-y[j]*x[i];a/=(x[i]*x[i]*x[j]-x[j]*x[j]*x[i]);if(a>=0)continue;double b=(y[j]-x[j]*x[j]*a)/x[j];++cnt;for(int k=1;k<=n;k++)if(a*x[k]*x[k]+b*x[k]<=y[k]+esp&&a*x[k]*x[k]+b*x[k]>=y[k]-esp){zt[cnt]|=1<<(k-1);} }}f[0]=0;for(int i=1;i<=cnt;i++)for(int j=0;j<(1<<n);j++)f[j|zt[i]]=min(f[j|zt[i]],f[j]+1);printf("%d\n",f[(1<<n)-1]);} }
阅读全文
0 0
- 2017.7.28 愤怒的小鸟 思考记录
- 愤怒的小鸟
- 愤怒的小鸟
- 愤怒的小鸟
- [NOIP2016] 愤怒的小鸟
- NOIP2016愤怒的小鸟
- P2831 愤怒的小鸟
- luoguP2831 愤怒的小鸟
- [NOIP2016]愤怒的小鸟
- NOIP2017愤怒的小鸟
- 【智力题】愤怒的小鸟
- 【NOIP2016】愤怒的小鸟
- 愤怒的小鸟
- 愤怒的小鸟
- NOIP2016D2T3 愤怒的小鸟
- NOIP2016 愤怒的小鸟
- mini6410安装愤怒的小鸟
- hdu 3940 愤怒的小鸟
- StringBuffer、StringBuilder、String的区别
- Map put
- guifan学习
- Java 继承 函数 重写后的调用关系
- 将上传按钮设为自动上传
- 2017.7.28 愤怒的小鸟 思考记录
- SpringData开发步骤
- python3安装使用xadmin
- JSP使用include命令报HTTP Status 500错误
- linux 单进程cpu特别高
- 二维测量(比较)
- cookie 和session 的区别详解
- hdu6040 Hints of sd0061(寻找第b[i]+1小的数)
- Google FCM推送(Firebase Cloud Messaging)