zoukankan      html  css  js  c++  java
  • P2831 愤怒的小鸟

    ————————————————————————————————————————————————————————————

    玄学调精度

    被if else的嵌套搞了,压行选手的痛,以后还是要注意点

    ——————————————————————————————————————————————————————————

    #include<bits/stdc++.h>
    using namespace std;
    #define setfin(x) memset(x,0,sizeof(x));
    #define setfax(x) memset(x,0x3f,sizeof(x));
    #define ld double
    ld x[20],y[20];
    int gk[20][20],t,n,dp[(1<<18)+5],judge[20],q;
    int calc(int d1,int d2)
    {
        ld x1=x[d1],y1=y[d1],x2=x[d2],y2=y[d2];
        ld tx=x1*x1*x2-x2*x2*x1,ty=y1*x2-y2*x1;
        ld a=ty/tx,b=(y1-a*x1*x1)/x1;
        if(a>=0) return 0;
        int res=0;
        judge[d1]=judge[d2]=1;
        for(int i=1;i<=n;i++)
        if(fabs(a*x[i]*x[i]+b*x[i]-y[i])<1e-7)res|=1<<(i-1),dp[res]=1;
        return res;
    }
    int main()
    {
        cin>>t;
        while(t--)
        {    
            setfin(judge);setfin(gk);setfax(dp);
            cin>>n>>q;
            for(int i=1;i<=n;i++){cin>>x[i]>>y[i];dp[1<<i-1]=1;}
            dp[0]=0;
            for(int i=1;i<=n;i++)for(int j=1;j<i;j++)gk[i][j]=calc(i,j);
            for(int i=0;i<1<<n;i++)for(int j=1;j<=n;j++)
            if(!(i&(1<<j-1)))
            {
                if(judge[j])for(int k=1;k<j;k++)
                if(!(i&(1<<k-1)))dp[i|gk[j][k]]=min(dp[i|gk[j][k]],dp[i]+1);    
                dp[i|(1<<j-1)]=min(dp[i|(1<<j-1)],dp[i]+1);
            }
            cout<<dp[(1<<n)-1]<<endl;
        }
    }
  • 相关阅读:
    配置apache+php环境详解
    美剧推荐之《行尸走肉》
    代码轻松实现wordpress彩色标签云
    php配置支持mysql解决本地安装wordpress问题
    struts2通配符和动态方法调用
    struts2文件上传1
    struts2入门
    jQuery3
    ADT20安装报错
    Android入门
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11304080.html
Copyright © 2011-2022 走看看