别问我为什么晚了一年才发,问就是懒
其实是现在才没有那种心理上的抵触,让我能够正常地去回忆起那段时光。
现在想想,那正是一段忐忑的历程,无论是过程上还是心理上。
虽然时隔一年,但是我对那一段时光真的是每一个细节都记得清清楚楚。
简要介绍:
我是20届,现在在某211带学读壬工智能
其实是因为高三节奏真的太快,再加上NOIp2018翻车,以至于心态一直不好,当时各种感觉交织在一起,以至于现在会想起NOIp2018之后的事情总会感觉有一种不真实感,只对一些对我影响比较大的事情,我才有一种真实感。
NOIp2018翻车后,真的是感觉一种前所未有的绝望感与无奈感(也就是在那段时间,我认识了爱酱,从此进入了DD的世界,感谢爱酱给我了前进的动力),”我明明实力是足够的,就是因为考试时候太自信了,以为能写出正解,没打暴力,然后正解没写出来,所以翻车,要是打了暴力,是绝对可以省一的“这种感觉一值伴随了很长一段时间。竞赛的失利与文化课的极度薄弱,已经来自同学家长老师的压力,几乎让我疯掉。
大概是经历了一个学期的恶补文化课,靠着爱酱给予的心理上的慰藉,我竟然撑下来了,然后文化课成绩也差不多可以了
在高三上学期开学,我觉得,是时候重启OI生活了!
然而,阻力比我想象的要大很多,我的班主任,家长,极力极力极力反对我。我可以理解他们的心理,但是,我觉得只有我自己对自己的实力最了解(可能有些自大,但是似乎确实是这样),我决定去赌一把。
然后我就经历我认为高中生涯中最艰难的时光,一边兼顾文化课,一边偷偷去机房复习,对于几乎没有额外时间的我,只能中午午休的时候去机房,忍耐着极其强烈的困意,去复习,然后在午休快要结束的时候跑回班稍微睡一小会。总之就是非常艰难,那一段时间,我知道了orangestar,鹿乃,阿良良等p主与唱见,TA们的歌真的在我绝望之时给了我动力,在我烦躁之时让我平静。
接下来就是重头戏了
DAY0:体育考试与”逃亡“
因为去参赛这件事情并没有给家人和老师说,所以,我做出了一个很危险的决定:偷偷溜出校门去考试。这是我第一次逃学,我已经做好吃处分的准备了。
提前和一个高二的学弟S商量好,让他帮我订一个房间,后来就非常就愉快和一个隔壁班的OIer T,学弟订了个三人间。S
这一天是体育测试,我准备和一个同学W共用假条(把他的假条上也写上我的名字),我提前把东西都整理好,下午跑完了一千米之后,稍作休息(跑完感觉快要吐了),给班里的一个同学说让W回来后去机房,然后我偷偷跑到机房,等待着W测试完。我清楚地记得,在机房里遇到了一个学弟,我心情十分紧张,几乎无法做任何事,恰好,那位学弟想听一听tarjan算法,然后我就给他讲了讲,在这个过程中,我的紧张感逐渐消散…
终于,W来到了机房,我最后检查了一下书包,然后直奔校门,用假条骗过保安,然后快步离开,我们一路快步走到体铁站,没想到的是,在过安检的时候,我的蝴蝶刀被扫出来了,没有开刃也不然带,然后就被没收了,还被拍了照,当时我的心态简直快要炸裂,不过还好有W的陪伴,我没有彻底崩溃。
在地铁上,我的大脑一片混乱,想着这时候老师应该发现我跑路了,家长应该也知道我不见了,想着回学校后会经历什么,应该会被狠狠地训一顿,然后公开处刑吧…
为了平复紧张地心情,我便打了会方舟。
W一直陪着我到终点,然后他便回家了,我去找提前订好地宾馆,在路上,我把音乐调到最大声,希望能够平静我内心的无限恐惧与慌张,我现在还能会想起当时听的是jump for joy和绝体绝命,hand in hand 。然后大概过了半个小时,我总算摸到了宾馆,学弟S给我开了门,躺在床上后,一股无比巨大的虚无感席卷全身…
大概在床上发了一个小时呆,我便起身,去复习了复习模板,之后就是一直在 看模板,打模板,一直到了11点。
然后我们就准备睡觉了,然后我的紧张感一直让我无法入眠,我清楚的记得窗户外发生了什么,就这样一直到了第二天清晨…
DAY1:
伴随着miku的《爱之诗》,我的意识被拉回了现实,然而我的紧张感还没有消退,于是便去准备去洗个澡,然而并没有热水,所以我就洗了头,收拾一下东西,买了包子和豆浆,便前往考场,一路上,我还试图用音乐去安抚快要崩溃的内心。
豆浆袋质量太差了,竟然捏爆了
总是就是进入了考场,下载了解压包,输入解压密码,把pdf拖到chrome…
T1:噔 噔 咚,第一看竟然不会做!
T2:不会
T3:不会
然后就有点慌了,喝了一口咖啡,便开始手动演算,大概过了10min,摸索出来结果了,然后打了代码,样例全过,便准备开始做第二题了(结果没开unsignedlonglong)。
~附上95分屑代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
long long k;
void solve(int n,long long k)
{
if(n==1){
if(k==0) printf("0");
if(k==1) printf("1");
return ;
}
if(k<(1LL<<(n-1))){
printf("0");
solve(n-1,k);
}
else{
printf("1");
solve(n-1,(1LL*1<<n)-1-k);
}
}
int main()
{
freopen("code.in","r",stdin);
freopen("code.out","w",stdout);
scanf("%d%lld",&n,&k);
solve(n,k);
return 0;
}
T3本来想拿部分分的,然后代码打了好长时间,才发现算法有误,然后便果断切T2
大概是想清楚部分分的思路了,但是仍然样例过不了,就这么一直持续了好长时间,然后发现是某个地方处理错了,然而已经没有时间了,只能打包好交了。
去宾馆旁边恰了一顿郃烙面,接着便是最难熬的下午了,我觉得DAY1爆炸,应该是没有希望了。
于是就用学弟的电脑打了一下午csgo,希望麻痹内心,又看了猪头少年的剧场版,企图熬过这一段时间。
傍晚,W给我发短信,说班主任找到他,让我联系家长, 然后班里的别的同学也发QQ,让我赶紧去联系一下。没办法,我只能鼓起勇气给他们打电话,出乎我意料的是,他们并没有训我,让我好好考试,从那一刻,我彻底的放松了,并没有想我想象的那样严重,我似乎觉得,一切最终都会好起来。
于是便安详地入睡了
DAY2:
与昨天早上一样的操作 (只是豆浆袋没有炸)
看了半天题,发现与树有关的题还是不会做 (与树有关的算法全部木大)
然后就开始手推DP,我感觉这道题和我之前做过的题很像,然后就一直推,然后就玄学地推出来了
结果过于激动忘了一个很简单地优化,90分->64分)
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=4*1e7;
int a[maxn],n,type,f[maxn],k[maxn],cnt,now;
long long sum[maxn],ans;
int main()
{
// freopen("partition.in","r",stdin);
// freopen("partition.out","w",stdout);
scanf("%d%d",&n,&type);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
}
k[1]=1;
for(int i=2;i<=n;++i){
for(int j=1;j<=i;++j){
if(sum[j-1]-sum[k[j-1]-1]<=sum[i]-sum[j-1]){
k[i]=max(k[i],j);
}
}
}
for(int i=n;i>=1;i=k[i]-1)
ans+=1LL*(sum[i]-sum[k[i]-1])*1LL*(sum[i]-sum[k[i]-1]);
printf("%lld\n",ans);
return 0;
}
然后T3!!!
竟然是卫宫家今天的饭!!!!
总是就是打了个暴力加玄学优化
32分
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const long long mod=998244353;
int n,m,a[205][2005],usedx[2005],use[2005],num,cnt;
long long ans;
void dfs(int x,int y,long long tmp,int tot)
{
tmp=(tmp*a[y][x])%mod;
if(tot==num){
ans=(ans+tmp)%mod;
//printf("finish %d %d %d\n",x,y,++cnt);
return;
}
if(tot+n-y<num) return;
for(int i=y+1;i<=n;++i)
for(int j=1;j<=m;++j){
if(a[i][j]!=0&&usedx[j]+1<=(num/2)){
usedx[j]++;
dfs(j,i,tmp,tot+1);
usedx[j]--;
}
}
}
void solve()
{
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
scanf("%d",&a[i][j]);
for(num=2;num<=n;++num)
for(int i=1;i<=n-num+1;++i)
for(int j=1;j<=m;++j)
if(a[i][j]!=0){
usedx[j]++;
dfs(j,i,1LL,1);
usedx[j]--;
}
printf("%lld\n",ans);
}
int main()
{
// freopen("meal.in","r",stdin);
// freopen("meal.out","w",stdout);
scanf("%d%d",&n,&m);
if(n<=10){
solve();
return 0;
}
if(m==2){
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
if(i!=j)
ans=(ans+a[i][1]*a[j][2])%mod;
}
}
if(m==3){
for(int i=1;i<3;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k){
if(j!=k) ans=(ans+a[j][i]*a[k][i+1])%mod;
}
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k){
if(j!=k) ans=(ans+a[j][1]*a[k][3])%mod;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k){
if(i!=k&&i!=j&&j!=k){
ans=(ans+a[i][1]*a[j][2]*a[k][3])%mod;
}
}
}
return 0;
}
剩下一题不会做,就没打。
然后我的OI生涯就这么结束了,充满了不真实感。
之后的事情就…
首先我如愿以偿地拿到了省一,然后就得知了自招取消,当时真的心情从巅峰跌倒了谷底,不过最终还是缓了过来~~(谢谢老婆们!)~~
最终高考成绩还可以,省排1.2w/110w,来到了帝都一个还行的211
现在在校ACM队里
以后会持续更新与算法相关的内容的
大概就是这些了,真的是一段充满了各种情感的一段时间,感谢OI给我带来的一切 (以及老婆们)