• [NOIP2016 TG D2T3]愤怒的小鸟


    题目大意:有一架弹弓位于(0,0)处,每次可以用它向第一象限发射一只小鸟,飞行轨迹均为形如y=ax2+bxy=ax+bx2 y=ax2+bx的曲线,且必须满足a<0(即是下开口的)

    平面的第一象限中有n只绿色的小猪,其中第i只小猪所在的坐标为(xi,yi)。

    如果某只小鸟的飞行轨迹经过了(xi,yi),那么第i只小猪就会被消灭掉,同时小鸟将会沿着原先的轨迹继续飞行;

    求至少需要发射多少只小鸟才能消灭所有的小猪。(多组数据)

    题解思路:

    可以枚举每两只小猪,如果可以用一条抛物线经过(即y[i]y[j],且求出的a<0),那么把它记录下来,并且枚举其他小猪,如果可以顺带打掉,那么就压位记录一下,然后bfs(压位)枚举要打的猪,并把可以顺带打掉的猪打掉,就可以求出答案

    C++ Code:

    #include<cstdio>
    #include<cstring>
    using namespace std;
    const double eps=1e-12;
    int T,n,m;
    double x[18],y[18],a,b;
    int step[1<<18],t,w,q[1<<18];
    bool can[18][18],v[1<<18];
    int remain[18][18];
    double abs(double a){return a>0?a:-a;}
    int main(){
    	scanf("%d",&T);
    	while (T--){
    		scanf("%d%d",&n,&m);
    		for (int i=0;i<n;i++)scanf("%lf%lf",&x[i],&y[i]);
    		for (int i=0;i<n;i++){
    			for (int j=0;j<n;j++){
    				can[i][j]=0;
    				remain[i][j]=(1<<n)-1;
    				if (i==j)continue;
    				if (x[i]==x[j])continue;
    				a=(y[i]*x[j]-y[j]*x[i])/(x[i]*x[i]*x[j]-x[j]*x[j]*x[i]);
    				if (a>=0)continue;
    				b=(x[i]*x[i]*y[j]-x[j]*x[j]*y[i])/(x[i]*x[i]*x[j]-x[j]*x[j]*x[i]);
    				can[i][j]=1;
    				remain[i][j]=(1<<n)-1;
    				for (int k=0;k<n;k++)if (abs(a*x[k]*x[k]+b*x[k]-y[k])<eps)remain[i][j]-=1<<k;
    			}
    		}
    		t=0;
    		memset(step,0,sizeof step);
    		memset(v,0,sizeof v);
    		step[q[w=1]=(1<<n)-1]=0;
    		v[(1<<n)-1]=1;
    		while (t<w){
    			int x=q[++t];
    			int i;
    			for (i=0;i<n;i++)if (x&(1<<i))break;
    			if (!v[x^(1<<i)]){
    				v[q[++w]=x^(1<<i)]=1;
    				step[x^(1<<i)]=step[x]+1;
    			}
    			for(int j=i+1;j<n;j++){
    				if ((x&(1<<j))&&(!(v[x&remain[i][j]]))&&can[i][j]){
    					step[q[++w]=(x&remain[i][j])]=step[x]+1;
    					v[x&remain[i][j]]=1;
    				}
    			}
    		}
    		printf("%d
    ",step[0]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    部署nginx服务
    mysql主从配置
    LNMP+WordPress博客搭建
    CIFS(Samba)服务的使用
    NFS服务的使用
    LVM逻辑卷
    FTP学习
    文件处理+生成器
    内置函数
    Python3
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/7809227.html
Copyright © 2020-2023  润新知