一个让我蛋分的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复赛模拟题

标签:分类:C语言
10条评论
  1. zhulisui留言于:2010年10月21日10:56 回复

    d35 继续加油。。

  2. hanetshuai留言于:2010年10月21日09:30 回复

    d27 d27 估计我做了也是O分。

  3. 黄伟涛留言于:2010年10月20日23:25 回复

    别泄气,沉着冷静,会行的。

    • 坏男孩留言于:2010年10月21日12:24 回复

      谢谢鼓励。

    • 坏男孩留言于:2010年10月21日12:25 回复

      最近你的博客速度好慢。怎么回事呢。。打开需要好几分钟。。

  4. uusee网络电视下载留言于:2010年10月20日17:02 回复

    哈哈哈 分享啦

  5. gorgons.留言于:2010年10月20日14:23 回复

    这么说。。没过?

    • 坏男孩留言于:2010年10月20日20:16 回复

      初赛过了。这是复赛的模拟赛。。。

      • gorgons.留言于:2010年10月22日16:43

        @坏男孩, d19 那究竟大结局是如何?

发表评论

*

*

d9 d8 d7 d6 d56 d55 d54 d53 d52 d51 d50 d5 d49 d48 d47 d46 d45 d44 d43 d42 d41 d40 d4 d39 d38 d37 d36 d35 d34 d33 d32 d31 d30 d3 d29 d28 d27 d26 d25 d24 d23 d22 d21 d20 d2 d19 d18 d17 d16 d15 d14 d13 d12 d11 d10 d1