//迟早会变成【真】的

2017 年 11 月 12 日,2017 年全国青少年信息学奥林匹克联赛 (NOIP2017)DAY2 交卷后。阴天。

DAY2 出来以后,大家貌似都比 DAY1 轻松,至少——我是这样的。

因为今天题目第一题难度很低,给了我足够时间打暴力。相比于 DAY1 手抖得都打不出 freopen 来说,好多了。

回来的路上和同学们讨论着今天的题目,感觉好像没什么问题,第一题打了 bfs 应该能 A,第二、三题打了暴力,DAY2 加起来至少有 190 分,第二题骗分运气好的话可能能得一点分吧。

坐上回一中的大巴后教练过来说我爸妈来接我了,于是坐上自家车去吃自助餐了,非常愉快。

回到家,打开笔记本,超级卡,卡了大概 10 多分钟打开了 QQ,得知 luogu 群里有 HN 的代码,就去下了。期间电脑依然超级卡,浪费很多时间。

拿到代码,打开 luogu,卡了半天,然后签到——特大吉。

想了想——测最有把握一道题吧:cheese(奶酪那题)。

代码如下:

#include <bits/stdc++.h>
using namespace std;
template<typename _Tp>inline void IN(_Tp&dig)
{
    char c;bool flag=0;dig=0;
    while(c=getchar(),!isdigit(c))if(c=='-')flag=1;
    while(isdigit(c))dig=dig*10+c-'0',c=getchar();
    if(flag)dig=-dig;
}
int T,n,h,r;
double x[1005],y[1005],z[1005];
bool book[1005],hbok[1005];
queue<int> que;
inline double P2(double a){return a*a;}
inline double dis(int a,int b)
{
    return sqrt(P2(x[a]-x[b])+P2(y[a]-y[b])+P2(z[a]-z[b]));
}
int main()
{
    freopen("cheese.in","r",stdin),freopen("cheese.out","w",stdout);
    IN(T);
    while(T--)
    {
        IN(n),IN(h),IN(r);
        for(int i=1;i<=n;i++)IN(x[i]),IN(y[i]),IN(z[i]);
        for(int i=1;i<=n;i++)
        {
            if(z[i]-r<=0)que.push(i),book[i]=1;
            if(z[i]+r>=h)hbok[i]=1;
        }
        while(!que.empty())
        {
            int F=que.front();que.pop();
            for(int i=1;i<=n;i++)if(!book[i])
                if(dis(F,i)<=(double)(r<<1))
                {
                    if(hbok[i]){puts("Yes");goto end;}
                    que.push(i),book[i]=1;
                }
        }
        puts("No");
        end:memset(book,0,sizeof(book));
        memset(hbok,0,sizeof(hbok));
        while(!que.empty())que.pop();
    }
    return 0;
}

去掉 freopen,提交,真诚地等着一屏幕的原谅色

结果等来的却是这样一幅景象——

WTF?心头一紧,仔细检查,发现 freopen 关掉了啊。怎么回事?

把数据下载下来观察发现:我没有判断上下边界直接由一个洞联通!

于是,第一题 0 分。

强忍着心中的剧痛,交了第三题写的暴力。代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
template<typename _Tp>inline void IN(_Tp&dig)
{
    char c;bool flag=0;dig=0;
    while(c=getchar(),!isdigit(c))if(c=='-')flag=1;
    while(isdigit(c))dig=dig*10+c-'0',c=getchar();
    if(flag)dig=-dig;
}
int n,m,q,x[300005],y[300005];
map<int,LL> mp[300005];
deque<LL> v1,v2;
void work()
{
    for(int i=1;i<=m;i++)v1.push_back((LL)i);
    for(int i=2;i<=n;i++)v2.push_back((LL)i*(LL)m);
    for(int i=1;i<=q;i++)
    {
        LL tmp=v1[y[i]-1];
        printf("%lld\n",tmp);
        deque<LL>::iterator it=v1.begin()+y[i]-1;
        v1.erase(it);
        v2.push_back(tmp);
        v1.push_back(v2[0]),v2.pop_front();
    }
}
LL getnum(int a,int b)
{
    if(mp[a][b])return mp[a][b];
    return (LL)(a-1)*(LL)m+(LL)b;
}
int main()
{
    freopen("phalanx.in","r",stdin),freopen("phalanx.out","w",stdout);
    IN(n),IN(m),IN(q);
    int MX=1;
    for(int i=1;i<=q;i++)IN(x[i]),IN(y[i]),MX=max(MX,x[i]);
    if(MX==1)work(),exit(0);
    for(int i=1;i<=q;i++)
    {
        LL tmp;
        printf("%lld\n",tmp=getnum(x[i],y[i]));
        for(int j=y[i];j<m;j++)mp[x[i]][j]=getnum(x[i],j+1);
        for(int j=x[i];j<n;j++)mp[j][m]=getnum(j+1,m);
        mp[n][m]=tmp;
    }
    return 0;
}

照理说 Map 应该能骗 50 分,但是最后只得了 30 分。也罢,反正第一题都挂了。。。

好吧,不得不说,这时候我已经彻底崩溃了。一个多月的停课,丢了一个多月的文化课,期中考试没考,教练和自己的努力,同学们的帮助,全部化为乌有了。

也许这就是故意的吧,我怕什么就发生什么。

但是我也总想着提高组一等奖应该完全没问题啊,就算全打暴力都可以拿吧。

但是事实证明我错了。

真不知道到时候获奖名单出来了,学校门口大红榜上偌大一块地方,却用显微镜都找不到我的名字,认识我的人都会怎么想呢。。。

毕竟去年出乎意料走运拿了一等,今年却出乎意料非洲滚粗。

唉,风水轮流转啊。

还想着拿高分呢。

也不知道为什么,进了考场,平时模拟考的气势全没了,完全没心思想题,草稿纸基本都没用。

主要还是心态问题吧,毕竟心态确实是炸了。

就 DAY1 来说,发现 T1 不会做就直接懵逼,最后吓到手抖得无法做题。

我是不是太紧张了。

但是应该还是太 naive 了,毕竟以前完全是抱着娱乐的心态搞 OI 的,很轻松。现在心态变了,有包袱了,很容易想多,什么冬令营什么省选。

看来以后还是不能想太多了,生活中也是这样吧。

以后也懒得膜人与吹比了,脚踏实地貌似是我缺少的东西。

还有要多刷题,毕竟熟能生巧啊。

在崩溃恢复后的 1 个小时之后,我去 luogu 交了 DAY2T2,发现得分还不错,70 分。

其实就是跑 dfs 枚举生成树,复杂度 $O(2^m)$。其实好像还大些,懒得证了。

但是显然这样复杂度太高,大样例都没过。所以我就加了个计数器,统计程序调用了多少次 dfs 函数。如果计数器的值大于 $10^6$就直接输出当前答案,不管答案对不对。

总之就是骗分。

可能是 luogu 数据水吧。。。

总之两天 luogu 数据我 250 分。真是讽刺啊,哈哈。

但愿 ccf 的数据也水啊,求上天保佑。。。

唉,算了,就当是一次锻炼吧。相信现在 rp 掉了这么多,迟早会在以后捡回来的了。

但愿以后还有机会让我再努力一把。

今天开始估计就得滚回常规了,博客基本停更(或者说就是停更),停止处理各类事项。

希望以后我还能再回来打理这个博客吧。

再见,OI。你好,常规。

分类: 文章

XZYQvQ

炒鸡辣鸡的制杖蒟蒻一枚QvQ

2 条评论

fzj · 2017年11月13日 4:45 下午

表示同感,进考场后完全没了模拟的感觉,Day1 完全就是极度紧张,暴力都没打。Day2 确实也比 Day1 轻松一点但差不多也跪了。o(╥﹏╥)o

piano · 2017年11月12日 8:41 下午

orz 我爆了好多分啊 药丸

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注