| 记录编号 | 
        608861 | 
        评测结果 | 
        AAAAAAAAAAAAAAAAAAAA | 
    
    
        | 题目名称 | 
        2561.[NOIP 2016]愤怒的小鸟 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         我常常追忆未来 | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        2.560 s  | 
    
    
        | 提交时间 | 
        2025-10-29 21:25:31 | 
        内存使用 | 
        7.81 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include <bits/stdc++.h>
using namespace std;
const double esp=1e-10;
const int N=20;
int f[1<<N];
int de[N*N];
int n,t,m;
struct pig{
    double x,y;
}p[N];
int main(){
    cin>>t;
    while(t--){
        int cnt=0;
        cin>>n>>m;
        memset(f,0x3f,sizeof(f));
        memset(p,0,sizeof(p));
        memset(de,0,sizeof(de));
        f[0]=0;
        for(int i=1;i<=n;i++){
            cin>>p[i].x>>p[i].y;
        }
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                if(fabs(p[i].x-p[j].x)<esp){
                    continue;
                }
                double aa=(p[i].y*p[j].x-p[j].y*p[i].x)/(p[i].x*p[i].x*p[j].x-p[j].x*p[j].x*p[i].x);
                double bb=(p[i].y-aa*p[i].x*p[i].x)/p[i].x;
                if(fabs(aa)>=esp&&aa<0){
                    cnt++;
                    for(int k=1;k<=n;k++){
                        if(fabs(aa*p[k].x*p[k].x+bb*p[k].x-p[k].y)<=esp){
                            de[cnt]|=(1<<(k-1));
                        }
                    }
                }
            }
        }
        for(int i=0;i<(1<<n);i++){
            for(int j=1;j<=cnt;j++){
                f[i|de[j]]=min(f[i|de[j]],f[i]+1);
            }
            for(int j=1;j<=n;j++){
                f[i|1<<(j-1)]=min(f[i|(1<<(j-1))],f[i]+1);
            }            
        }
        cout<<f[(1<<n)-1]<<"\n";
    }
    return 0;
}