我六点闹钟起床,来到机房又打了几个板子,复习了一下暑期集训的那些题。八点二十的时候去了比赛的机房,配好环境之后等着学长来发密码条。发到最后了发现没我的,然后才发现我坐错机房了。。。但是环境都配好了,我就去我该去的机房拿上了我的密码条回来了。九点开始的比赛,因为种种原因,推到了九点十五。提前我已经把板子打好了。比赛开始前半分钟,题面压缩包的密码告诉了我们,我打开题面看了一眼A,就是一个输出。直接puts就行。毫无疑问,我A题0罚时拿了一血(全场最水最没有意义的一个一血。A过了之后,我就往下看题了,感觉B可以写,但是抱着先把题看完的心态,往下把题看完了。最后还是准备写B,B我怎么算复杂度都是1e7的复杂度,敲完之后,我看还没人交,以为自己又要有个一血,然后TLE???当时脑袋里就嗡嗡的。完了,T了。这时候榜单上有人过了G。我去看了一眼G,就是统计一个数中圈的个数。题面上有一句是这样的8 has 2 cycles,我看成了8和2都有两个圈(微笑。然后WA了两次,过了之后,名次已经排到后后面了,因为他们都没有罚时,而我已经有了3*20了。然后我看B有人过了,我还是很懵,1e7怎么可能会T?然后我忘了怎么改了一下,交了一发,这次是WA了。那时候心态是真的崩了。然后我又是关同步流,又是O2,O3优化的,又叫了一发,果然又T了。我想不能在一棵树上吊死,开了个新题F。F每啥,就是个大模拟,很快的敲出来之后我交了一发,WA了???我惊了。然后我又是各种读题,各种给自己试样例,改了一次交了次,WA,呵呵。榜单上有人过了D,我就先把F放了放去看D,看了一眼D,有思路但是不会写,就又回去改F了,F让我很不爽,关键是你就不知道哪错了。这时候,我在榜单上面排42名,银牌区都掉出来了亲。有一种鼠标一摔键盘一摔直接走的冲动。但是我忍住了。F又改了一发交了上去,又WA。我扭头就去写D,然后D过了。这时候一个correct的出现的感觉就像是久旱逢甘霖。我突然想起来B是不是在卡cin(关同步流也没用的那种),我又回去改B,弃用string,改用char数组。然后把strlen写在了外面,试了试没问题就交了。距离我交上去了一分钟多了,还在判,我想着,哦,又要T了。但是我怎么算都是1e7,这道题还是2s怎么会T呢???万念俱灰的时候,过了。它过了,鬼知道是在卡cin还是多计算的字符串长度,我笑了。B过了之后,我松了一口气。去上了个厕所,回来之后发现F也有人过了,我的一血也不会有了,但我还是准备写F,找不到bug我就重写,换着方式模拟,改了两次之后,WA了两次之后,过了。然后发现有人过了E,这道题我一开始就看了,感觉是个dp,但是过的人不少,我想着应该有简单的方法。然后就胡乱的敲了一个代码,样例过了之后就交了,然后就过了???(后来听题解的时候才知道,正解确实是dp,但是这个题选的摩斯密码,它很特殊,直接输出字符串长度/2就是答案)23333。现在我已经六题了。但是罚时爆炸。我看好几个7题的人都是过了J。然后我就去看J。这个题吧,卡了我将近三个小时。暴力我想不到怎么写,寄希望于是个有规律的数列,BM板子都抄了一边,O(n^3)的跑了前200项放到BM里面,WA。显然这不是有规律的数列,但是过的人那么多,我到最后都没过。最后听了题解才知道就是一道暴力的题,但是有优化。总的来说,题目还是很不错的,就是我太菜了。
最后抽奖环节也没抽到奖(六十几个人抽十个都抽不到的运气)。最终排名第10,没有滚出金牌区,好羡慕前面的人,奖金巨多,可是跟我并没有什么瓜西 。
期待了好久,担心了好久的校赛终于是安然的结束了。虽然名次不太理想,但是我知道我也就这个水平了,嘿嘿。接下来就该好好复习了呢,马上就是一大堆的考试。加油吧,少年。

补一下J题吧。
Link: HPU’s birthday
Problem solving:
因为1e5的二进制才不到32位,所以可以构建出来最后的那个字符串进行遍历。
边遍历边统计1出现的次数(x),每次遇见0的时候,就相当于在已经出现的1里面选两个,方案数就是x*(x-1)/2,按照这个规则遍历完,每次累加即可。
Code:

#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
int main()
{
    long long n, x;
    cin >> n;
    while (n--)
    {
        cin >> x;
        long long        mid = 0, ans = 0;
        bitset<64> b(x);
        string     s = b.to_string().substr(b.to_string().find_first_not_of('0'));
        string     t;
        for (long long i = 0; i < x; i++)
            t += s;
        for (long long i = 0; i < t.size(); i++)
        {
            mid += (t[i] == '1');
            if (t[i] == '0')
            {
                ans += mid * (mid - 1) / 2 % mod;
            }
        }
        cout << ans%mod << endl;
    }
    return 0;
}

最后放上我的domjudge首页吧