我真是醉了啊!

很气。

首先,自我介绍一下,{

  我叫陈雍之,(cyz666是我的博客),是个退役的浙江OIer,最好成绩是NOI2018 rank21,接下来会成为同学们的小教员、、

  但是,我 没 过 免 修 测 试 !(指 编程水平测试)

}

 

而今天,我发现了原因。

饭后,在做上周的程设作业时,“跳马问题1”这道题,我挂了一个点,内心十分奇怪,然后,十分迷的给输入的K个棋子加了句if (y<=m) blabla  做保证,然后过了!

“wtf??输入的棋子还有在棋盘外的??算了,虽然很扯,但题目确实没保证,反正小水题 啧........等等!”

我突然心想,水平测试的题,会不会也出了这种事?

 

水平测试那天,

过了T1后,我开了T3:

 

 

然后,写了棵主席树(mmm就是一种数据结构算法,用这个做法确实是我智障了。原谅我。。但是正确性是有的)

过了样例以后,交,30分(就是第一档数据),之后,从奇怪、疑惑、到自己造数据写暴力对拍、拼命查错,心态都要爆炸了,不敢相信自己竟然连这样的题都过不了。

一直到考试只剩最后二十几分钟,看T2,一下子没想法,看T4,数位DP,写,最后卡着时间测完样例就交,错了。

 

130分/600分。难受,是自己不肯接受卡题、是自己不肯换题做,考出了OI生涯最糟糕的水平(不过这不是第一次,我很佛的hhh)。考完那天我甚至在怀疑自己的编程水平了。

 

今天,我回去填坑了,

过程如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int T,n,m,x,y;
 4 int main(){
 5     scanf("%d",&T);
 6     if (T>10) while (1);
 7     while (T--){
 8         scanf("%d%d",&n,&m);
 9         if (n>10000||m>10000) while (1);
10         for (int i=1;i<=n+m;++i){
11             scanf("%d%d",&x,&y);
12             if (x<1||y<1||x>1000000000||y>1000000000) while (1);
13         }
14     }
15     return 0;
16 }
检查输入

 

果然,七个数据点都有问题!

经过一番二分,我找到了最有问题的一个数据。

 

 找到了:n=116805,比题目给的范围高了一个数量级不止。

 

 嗯,然后我加大了自己代码中的相关数值,然后就100了。

 

 我不知道116805是出题人的什么幸运数字,但是,这个数,确 实 让 我 十 分 气!

这可是清华啊!!对于OIer来说,清华在程设方面难道不应是至高(or 并列)的象征吗?

为什么清华校内的编程考试,能出这样的问题?

清华校内的OJ,这种bug若比比皆是,不丢脸吗?

我也不说什么“还我分数”之类的话了。毕竟,这次的应试是我的巨大失误。(大概也反映了我对清华的足够的信任)

但是,这个坑,还要学弟学妹们继续摔进去吗?

我觉得以后,做作业题的时候,怕不是都要先检查一下输入数据的合法性了,遇到不合法的就尽快通知助教修改,出题人的锅由后人来背、来填坑 满意了吧。

 

同时,我希望,以后若有新作业题添加,出题人请不要用脚造数据了,也请写清楚数据范围和格式。

“让同学们能多多考虑各种bug情况”这句话是对的,但是,不要以此来掩盖自己出题、造数据的bug好吗。

以上。反正不知道对象是谁,就简单的喷一喷啦~

posted @ 2019-11-24 20:37  cyz666  阅读(438)  评论(0编辑  收藏  举报