【NOIP2016】普及组复赛赛后总结

来源:互联网 发布:oi随机数算法 编辑:程序博客网 时间:2024/05/03 23:00

虽然真实成绩还没出来,但也在一个OJ上自己测了(民间数据):

https://www.luogu.org/contest/show?tid=1265

(比赛已关闭,但题是可以交的)

PS:带蓝色是题解链接

以下总结下普及组考后各种恶心,想吐,难受,想哭的东西:

1.第一题,额……不用说,只是为了不打击我们脆弱的心灵而已。


2.第二题,辛辛苦苦写了100行,调了1小时的代码只得了50分……(。•ˇ‸ˇ•。)不服!一个pascal的11行代码骗了60分(请欣赏):

varx,y:string;i:integer;beginreadln(x);readln(y);for i:=1 to 4 do if(x[i]<>x[8-i+1])  then begin writeln(0);exit;end;writeln(1);end.
虽然是学的C++,但这种代码还是没问题的,他只是完成60%的子任务,早知道我也只看第一个子任务了,我的10分,❤疼……

还是把自己看高了,信心满满地打了一大篇……还不如完成子任务,so,以后还是自持点……好好骗分就够了


最后两道就极其爽……猥琐!了,一道爆空间,一道爆时间……


3.我很伤心(;′⌒`)整整30分,只是因为不会算空间(狂扇自己巴掌)!请看暴搜代码:

#include<cstdio>#include<cstring>#define H 86400#define MAXN 350//就是这里int n;int t[MAXN+5],na[MAXN+5][MAXN+5],p[MAXN+5];bool f[MAXN+5];int main(){    //freopen("port.in","r",stdin);    //freopen("port.out","w",stdout);    scanf("%d",&n);    for(int i=1;i<=n;i++)    {        int sum=0;        scanf("%d%d",&t[i],&p[i]);        for(int j=1;j<=p[i];j++)        {            scanf("%d",&na[i][j]);            if(!f[na[i][j]])            {                sum++;                f[na[i][j]]=true;            }        }        int tb=t[i]-H;        for(int j=1;j<=i;j++)        {            if(t[j]<=tb)                continue;            for(int k=1;k<=p[j];k++)                if(!f[na[j][k]])                {                    sum++;                    f[na[j][k]]=true;                }        }        printf("%d\n",sum);        memset(f,false,sizeof(f));    }    //fclose(stdin);    //fclose(stdout);    return 0;}

其他的不想多说只是看看第四行,350……知道我怎么算的空间吗?

printf("%d",(sizeof(t)+sizeof(na)+sizeof(p)+sizeof(f))/1024);
只除了一个1024!!然而,前面是字节!字节!字节!(B)

甜辣卤!我其实一直在想这个问题,这样好大啊,但,我却一直在跟KB较真,事实上KB的确只需要除以一个1024即可,请允许我再说一遍:前面是字节!字节!字节!(B) -->前面是字节!字节!字节!(B)(重要的事情说9遍)

所以……要除2遍1024!!于是我们愉快地失去了30分……烦啊!!


4.暴搜嘛,然而还是少了5分……大家先看看这样一道题:

输入3个数,如果它们是升序排列,输出yes,反之输出no

好简单啊,好的,请看我的:

if(x[a]<x[b]&&x[a]<x[c]&&x[a]<x[d]&&x[b]<x[c]&&x[b]<x[d]&&x[c]<x[d])//不用在意用的数组printf("yes");
你知道咩(反正我当时不知道(再次扇巴掌)),事实上直接这样就行了:

if(x[a]<x[b]&&x[b]<x[c]&&x[c]<x[d])printf("yes");
好像也无伤大雅……这道题是的,如果改成了:有多组数据(<100^4)总时间限制1S,用第一种显然会慢很多(所谓小流积大河),而后一种是较快的……

so考试这道题爆搜四重循环,让我们算算,(6-3)*100^4……呵呵呵呵我就呵呵。于是又少了5分(一个点)。


最后,这次一共不该失的分有45分!!整整45分啊……(ㄒoㄒ)~~


ps:成绩出来才发现事实上数据很水,第二题我竟然得了70分……

                                                                                                                                                                           By WZY

0 0