noip2016题解
2018-11-05 21:50
267 查看
没有正解,都是我的暴力
T1玩具谜题
模拟
#include<iostream> #include<cmath> #include<ctime> #include<cstdio> #include<cstring> #include<algorithm> #define N 20 using namespace std; int T; int n,m; bool flag,Kill ,s ; double x ,y ,A ,B ; int gcd(int x,int y) { return y==0?x:gcd(y,x%y); } void slove(int a,int b) { // cout<<"AAA"<<endl; int x1,x2,x3,x4,y1,y2,k1,k2,bb; x1=x[a]*100;x2=x[b]*100; x3=x1;x4=x2;x1=x1*x1;x2=x2*x2; y1=y[a]*100;y2=y[b]*100; int g;g=gcd(y1,y2);bb=y1*y2/g; k1=bb/x3;k2=bb/x4; x1=x1*k1;x2=x2*k2;x3=x3*k1; y1=y1*k1;y2=y2*k2;x4=x4*k2; double AA,BB; AA=100.*(1.*y2-1.*y1); AA=AA/(x2-x1); // cout<<y1<<" "<<AA*x1/100<<" "<<x3<<endl; BB=(1.*y1-1.*AA*x1/100.)/(1.*x3); A[a][b]=A[b][a]=AA; B[a][b]=B[b][a]=BB; } void dfs(int has_,int die_) { if(flag) return ; if(has_==0) { if(die_==n) flag=true; return ; } for(int i=1;i<=n;i++) { if(Kill[i]) continue; Kill[i]=true; dfs(has_-1,die_+1); Kill[i]=false; } for(int i=1;i<=n;i++) { if(Kill[i]) continue; for(int j=1;j<=n;j++) { if(Kill[j]||x[i]==x[j]) continue; int js=0; Kill[i]=Kill[j]=true; for(int k=1;k<=n;k++) { if(Kill[k]) continue; if(A[i][j]*x[k]*x[k]+B[i][j]*x[k]==y[k]) { Kill[k]=true;js++;s[k]=true; } } dfs(has_-1,die_+js+2); for(int k=1;k<=n;k++) if(s[k]) Kill[k]=false; memset(s,0,sizeof(s)); } } } int main() { scanf("%d",&T); while(T--) { flag=false; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { //scanf("%lf%lf",x[i],y[i]); cin>>x[i]>>y[i]; } if(n==1) { printf("1\n"); continue; } for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { slove(i,j); } } // cout<<A[1][2]<<" "<<B[1][2]<<endl; for(int i=1;i<=n;i++) { memset(Kill,0,sizeof(Kill)); dfs(i,0); if(flag) { printf("%d\n",i); break; } } } return 0; } /* 1 2 0 1.00 3.00 3.00 3.00 */写挂了 明天改
相关文章推荐
- JZOJ [4820]. 【NOIP2016提高A组模拟10.15】最大化
- NOIP 2016模拟赛1 T1 最多因数
- 颜料大乱斗【NOIP2016提高A组模拟7.15】
- noip2016初赛赛前
- JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰 2017.10(B组)
- 【NOIP2016提高A组模拟10.15】打膈膜
- JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
- NOIP2016 暑期培训 D2
- [noip2016]天天爱跑步 题解
- [NOIp 2016]天天爱跑步
- 【NOIP2016提高A组集训第1场10.29】小W学物理
- NOIP2016 DAY2
- BZOJ 4720: [Noip2016]换教室
- JZOJ 4823 【NOIP2016提高A组集训第1场10.29】小W学物理
- [NOIp2016] 换教室
- JZOJ4846【NOIP2016提高A组集训第5场11.2】行走
- 2016 NOIP提高组复赛解题报告 C++
- 【NOIP2016提高A组8.11】自然数
- JZOJsenior4777.【NOIP2016提高A组模拟9.14】灌水