一个让我蛋分的NOIP复赛模拟题
时间:2010年10月20日作者:坏男孩查看次数:1,795 views评论次数:10
其实,题目真的很水很水。基本全部模拟+穷举。然而我……竟然0分。。。
题目和测试数据我已经放在了网盘上:点击下载题目+测试数据+标程。文件名:“NOIP模拟1.rar”
接下来我把我的蛋分程序贴出来:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <iostream> using namespace std; int r; int suma,sumb,sa,sb,a[9],b[9]; int ooxx; int mina,minb; bool t=true; bool cinn (){ for (int i=1;i<=8;i++){ cin>>a[i]; if (a[i]==-1)return false; } } bool cinm (){ for (int i=1;i<=8;i++){ cin>>b[i]; //if (b[i]==-1)return false; } } void couta () { for (int i=1;i<=8;i++){ if (a[i]<=r&&a[i]<minb)suma++; } } void coutb () { for (int i=1;i<=8;i++){ if (b[i]<=r&&b[i]<mina)sumb++; } } void work (){ //for (int i=1;i<=ooxx;i++){ mina=9999; minb=9999; suma=0; sumb=0; for (int j=1;j<=8;j++){ if (a[j]<mina)mina=a[j]; } for (int j=1;j<=8;j++){ if (b[j]<minb)minb=b[j]; } if (mina<minb)couta(); else if (mina>minb)coutb(); else if (mina==minb){suma=0;sumb=0;} cout<<suma<<':'<<sumb<<endl; sa+=suma; sb+=sumb; //} } int main () { freopen ("curling.in","r",stdin); freopen ("curling.out","w",stdout); cin>>r; ooxx=10; for (int i=1;i<=20;i++){ if (i%2==1)t=cinn(); if (i%2==0)t=cinm(); if (t==false){ooxx=i;break;} ooxx/=2; if (i%2==0)work (); } cout<<sa<<':'<<sb<<endl; return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include <iostream> using namespace std; int pivot; int f[50001][7]; float x; int ak (int r[],int first,int end ){ int i=first; int j=end; while (i<j){ while (i<j&&r[i]<=r[j])j--; if (i<j){ int t=r[i]; r[i]=r[j]; r[j]=t;i++; } while (i<j&&r[i]<=r[j])i++; if (i<j){ int t=r[i]; r[i]=r[j]; r[j]=t;j--; } } return i; } void sort (int r[],int first,int end){ if (first<end){ pivot=ak (r,first,end); sort (r,first,pivot-1); sort (r,pivot+1,end); } } int xxx[7]; int main () { freopen ("count.in","r",stdin); freopen ("count.out","w",stdout); int n,m; cin>>n>>m; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ cin>>f[j][i]; if (f[j][i]<1||f[j][i]>100)xxx[j]++; } } for (int i=1;i<=m;i++){ sort (f[i],1,n); } float bb[7]; float bbb[7]; //cout<<p<<endl; //for (int i=1;i<=m;i++)cout<<xxx[i]<<endl; for (int i=1;i<=m;i++){ int summ=0; int suma=0; int ooxx=0; int oxx=0; int nn=n-xxx[i]; x=(n-xxx[i])/10.0; int p; if (x-int(x)>=0.5)p=x+1; else p=x; for (int j=p+1;j<=nn-p;){ if (f[i][j]>=1&&f[i][j]<=100){ summ+=f[i][j]; ooxx++; j++; } } for (int j=1;j<=p;){ if (f[i][j]>=1&&f[i][j]<=100){ suma+=f[i][j]; oxx++; j++; } } for (int j=nn-p+1;j<=nn;){ if (f[i][j]>=1&&f[i][j]<=100){ suma+=f[i][j]; oxx++; j++; } } bb[i]=(suma+summ)/((oxx+ooxx)*1.0); bbb[i]=summ/((ooxx)*1.0); //printf ("%.2f %.2f\n",(suma+summ)/(n*1.0),summ/((n-2*p)*1.0)); } for (int i=1;i<=m;i++)printf ("%.2f ",bb[i]);cout<<endl; for (int i=1;i<=m;i++)printf ("%.2f ",bbb[i]);cout<<endl; return 0; } |
希望有大牛可以指点下这两个错误程序。样例数据都过了,但是测试数据全×。无语……
声明: 本文采用 BY-NC-SA 协议进行授权 | 坏男孩的博客
转载请注明转自《一个让我蛋分的NOIP复赛模拟题》
发表评论
恩,是的。
别泄气,沉着冷静,会行的。
谢谢鼓励。
最近你的博客速度好慢。怎么回事呢。。打开需要好几分钟。。
哈哈哈 分享啦
这么说。。没过?
初赛过了。这是复赛的模拟赛。。。
@坏男孩,
那究竟大结局是如何?