In mathematics you don't understand things, you just get used to them.

分类 文章 下的文章

不是特别想说伤心的事情。

T1 一遍过完所有大样例,此时只过去了十几二十分钟,不过之前花了半个小时通读了整个 PDF 所以此时大概过了 1h。

T2 大概花了十几分钟胡出了一个反着枚举就是正解的 n^2 暴力。

又花了一个多小时写出了一个能过第一个小样例的 180 行垃圾。

然后,就没有然后了。

后面三个小时全部调试去了。

大概可以从这里看到我考场思路的经过

//T1:给你n个点,其中m个没有入度,接受.
//没有出度为终点.问,每个终点最终的水量.
//先考虑直接模拟.
//找出m(m很小)个起点,然后,dfs.
//Beware of your long long
//过完dyl了,记得最后15min检查long long
//
//T2:数据范围大概1e5+5e4的样子。
//先考虑一个暴力。
//C是一定在最后的,我们考虑从后往前枚举C。
//然后看前面的循环的个数,设前面的循环节为SS。
//那么就有(|S|-|C|)/(|SS|)个基循环节。
//里面随便划分两个字符串分别做A,B,方案数为|S|-1。
//然后我们可以用基循环节再组成一些新的循环节,这个要看(|S|-|C|)/(|SS|)的因数个数。
//但是我们需要满足F(A)<=F(C)。
//这个我们每次统计一遍即可。
//但是但是
//如何找循环节?
//找出来了。
//然后,我们把循环节中所有前缀(不含空串)的F值找出来,计为funa[j],1<=j<i。
//然后把(|S|-|C|)/(|SS|)的因数分解出来,计为ps[k],然后就计算funa[j]*ps[k]<=F(C)的情况有多少种,但是时间复杂度好像退化le,好像没有,。算了先打。
//哦对了我们可以把funa排个序,用单调性来优化成O(n^2*log)应该能过一半左右。(funa本身不具有单调性。)
//
//思路比较乱,重新整理一下如何计算答案。
//设当前的C=S[i,n]。
//枚举的前缀A=S[1,j],B=S[j+1,i-1](不关心)
//设M=(|S|-|C|)/(|SS|),即基循环节=SS一共有多少节。
//设P(M)表示M的某一个因数。
//如果当前的F(A)<=F(C),那么对于P(M)为奇数的情况,我们用P(M)个SS可以重新组成又一个循环节。
//枚举一个j in [1,i-2],来计算答案。
//这里相当于把我们当前的S[1,i-1]分成了M段,看当前我们枚举的j在哪一段。
//设在第x段,如果x|M,那么ans+=M/x;否则ans++。
//计算当前在哪一段:
//法1:用变量
//法2:算
//恩,dyl没过。初步判断是算漏了,不存在算重的问题。
//不好像也有算多了。。。1
//大概知道哪里有问题了。
//当|SS|=1时,一个循环节里不知道怎么摆B。
//需要特判,当|SS|=1,不算基循环节的贡献。
//不过我答案是少了阿。。。
//还是不行。
//
//
//3
//nnrnnr
//zzzaab
//mmlmmlo

现场发明了一个不用 KMP 线性求循环节的方法(苦笑)。

        lps[len] = mps[1];
        // how to work the "loop day (xun huan jie)" out
        // open an array to store the LD
        // then (for j=2 to i-1), t    o "beautiful orange (mei ju)" the prefix
        // cur means currently we where we should match (under S LD meaning)
        // len means the length of the LD
        // lst means the previous fail matched position
        // when we "lost match (shi pei)" we then add S[lst,j] into the LD
        // then put lst into zero,put cur into one
        // when finish 1 round matching (cur==len+1), we should:
        // 1. change cur into 1
        // 2. change lst into j+1
        // remember to special check if the (|S|-|C|)/(|SS|) isn't in Z situation
        for ( int j = 2; j < i; ++ j ) {
            if ( mps[j] != lps[cur] ) {
                cur = 1;
                for ( int k = lst; k <= j; ++ k )    lps[++ len] = mps[k];
                lst = j + 1;
            }
            else {
                cur ++;
                if ( cur == len + 1 )    cur = 1;
            }
//            oneDebug ( j, cur, lst, len );
        }
        if ( ( i - 1 ) % len ) {
            len = i - 1;
            for ( int j = 1; j <= len; ++ j )    lps[j] = mps[j];
        }

中式英语令人愁。

中午大家一起吃饭的时候发现 T1 题读错了。

发现 T2 枚举 A 或者倒着枚举 C 咱就是对的呢。

SyadouHayami 说我 CCF 系列的比赛考一次炸一次。

我倒觉得不一定就是考得炸了,也许只是单纯的菜而已。

并不想写什么深刻的思考,这样反而不像我。

只是想说,没有办法,只能这样了。

已经做好听从 GM、ZSL、MOM、LF 的指令 go back 的准备了。

再见,明年再见。

其实这次的 CSP 暴露出来了很多问题。

比如策略上的,在 T1 花了太多的时间直接心态爆炸,后面的题只想着把暴力打满。看到 T2 只想着打暴力,根本没有沉下心来想,白白丢了一道(水)题。

T3 连暴力都不打是不应该的。

T4 就不说了,好像很多人都是和我一样大样例有些多 1。

无论如何,作为第一次上联赛提高组的考场,没有考出水平,只能说很遗憾。

赛前和同校的学长们也打了很多次模拟赛,排名在前面的也就那么几次。

甚至在考前两个星期连着被 数学、信息(两个) 共计三个老师批评浮躁,也许静下来很难,但不静下来确实是不行的。

我在 赛前强基 里写了这样一句话:沉心静气,少逼两句。

看来根本没有起到警示作用。

真正沉下气来想,如果 T4 的想法不出锅的话,打个 300+ 还是没有问题的。

(我天真,T4 多一标准错解)(改改就 70 了)

奈何时光无法重来,Time Machine 也只存在于幻想。

文化课和竞赛是相辅相成的,从赛前的文化课也能看出来自己状态的不对劲。

向来最拿手的英语(一般最差都是 140+)一次周考短填直接 -8。

数学直接 121,对没有解释就是这么低。

不过,人也不能一直活在失败里。我们总要走出阴影,去迎接下一个挑战,停滞不前是很没有意思的。

$$\texttt{I am a slow walker,but I never walk backwards.}$$