暴力枚举一下
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int x[5],a[5],b[5]; int T; int fz,fm; double ans; int flag; int tot; void copy() { a[1]=x[1]; a[2]=x[2]; a[3]=x[3]; } int cheak() { sort(a+1,a+4); sort(b+1,b+4); int lva,lvb; if(a[1]==a[2]&&a[2]==a[3]) lva=3; else if(a[2]==a[3]||a[1]==a[2]) lva=2; else lva=1; if(b[1]==b[2]&&b[2]==b[3]) lvb=3; else if(b[2]==b[3]||b[1]==b[2]) lvb=2; else lvb=1; if(lva>lvb) return 1; else if(lva<lvb) return 0; else if(lva==lvb) { if(lva==3) { if(a[1]>b[1]) return 1; else return 0; } else if(lva==2) { if(a[2]>b[2]) return 1; else if(a[2]<b[2]) return 0; else { int u1,u2; if(a[2]==a[3]) u1=a[1]; else u1=a[3]; if(b[2]==b[3]) u2=b[1]; else u2=b[3]; if(u1>u2) return 1; else return 0; } } else if(lva==1) { if(a[3]>b[3]) return 1; else if(a[3]<b[3]) return 0; else { if(a[2]>b[2]) return 1; else if(a[2]<b[2]) return 0; else { if(a[1]>b[1]) return 1; else if(a[1]<b[1]) return 0; else return 0; } } return 0; } } } int main() { scanf("%d",&T); while(T--) { scanf("%d%d%d %d%d%d",&x[1],&x[2],&x[3],&b[1],&b[2],&b[3]); copy(); flag=cheak(); fz=flag; if(fz) printf("1.000\n"); else if(fz==0) { ans=0; fm=0; for(int i=1;i<=3;i++) { tot=0; for(int j=1;j<=6;j++) { copy(); a[i]=j; flag=cheak(); tot=tot+flag; } if(tot==0) continue; ans=max(ans,1.0*tot/6); } printf("%.3lf\n",ans); } } return 0; }
原文:http://www.cnblogs.com/zufezzt/p/5005210.html