很气。
首先,自我介绍一下,{
我叫陈雍之,(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好吗。
以上。反正不知道对象是谁,就简单的喷一喷啦~