考试心得2

接上一篇考试心得1

突然发现已经写了这么久了,要坚持下去啊,温故而知新,总结才有收获。(话说代码实在是太占地方了。。。


\(\mathtt{2024/7/5-15}\)

暑假模拟赛,就放在一起写了吧。

P.S. 8.3号起每篇总结就不会再放每道题的连接了,只有总结。

Day1

爆零了。也没啥可说了,考场上也想了很多,T1二分也差不多看出来了,T2注意到了数据范围很小,T3没思路,T4都想到了,就是打不出来。

T1 酸碱度中和

很简单的二分答案,不合法就再开一个区间。

总结:练的题太少了,没有第一眼看出来,还有忘了二分模版。

写完总结没保存!!!

又要鸽了。。。

Day3

五道题, ヽ(#'Д´)ノ。

T1 分糖果

第一眼觉得像一道小学数学题,有了一个思路,把 \(0,1,2\) 分别统计一下,然后先分 \(0,1,2\) ,再分 三个数相同 的其他情况,自己手造了一个样例,发现假了,然后颠倒了分组顺序,95pts->85pts(真无语了

考完试发现自己原先的思路是正确的,加个特判就过了,总结:95+85=100。
要细心、考虑全面。

T2 乒乓球

考场上打了个暴力部分分30pts,本来注意到了有大循环节,但不知道该怎么处理,最后看到正解还挺巧妙的。总结:思维能力和代码能力还是不行。

T3 与或

考场上只会打爆搜。当时想着 \(2^{60}\) 肯定就是拆位,应该是枚举每一位,但忘记了&放得越前就越优。前缀和维护的真是巧妙,这个性质是真没有想到:

一段区间内这一位的和<区间长度,则连&后一定为0;如果和大于1,连|后一定为1。

还是挺简单的(但我怎么调了那么久?),学到了。。。

警钟长鸣:找到错因了,if语句里的&&一定不能分开写!!否则有些情况(比如 \(cnt<k\)\(check\) 函数不满足)就考虑不到了!!!

T4 跳舞

区间dp,要预处理。题解

Day4

本来有130pts,挂到了105pts。我还是喜欢IOI赛制。话说这几次考试分差越来越紧密了,35分隔了17个人???

T1 超市抢购

简单题,考试因为开不开 \(long\, long\) 纠结了很久 (主要是曾经炸的太惨了,最后果断开了。可喜可贺,没有炸。

T2 核酸检测

\(dp[i]\) 表示在第 \(i\) 时刻喊话,最少要喊多少遍,满足所有 \(l≤i\) 的人都已经听到了; \(way\)表示此时的方案数。 \(minr\) 表示同一个 \(l\) 开始,最小的 \(r\)

会发现从 \(i\) 转移到 \(j (i<j)\)\(dp[j]=min(dp[j],dp[i]+1)\),范围就是 \(i+1\)\(minr[i]\),因为超过这个区间只加1就不能满足了。转移的时候还要注意另一种情况: \(dp[j]==dp[i]+1\) ,此时方案数应该相加(毕竟两种不同方式得来的)。统计也是如此。

T3 七龙珠

很幸运,把01背包板子打错了(好像是没有特判<0)。浅浅的挂了15pts。

貌似正解就是背包。然后优先队列从大到小维护,或者dfs都可以。老师的题解没有标程,导致我理解的不够透彻。主要看的是\(wsq\) 的题解

T4 龙珠游戏

啊!考场上打了一个小时的暴搜结果挂0了,原因是题读错了!龙拿的不一定是这个数列里最大的,问题是样例根本检验不了我的代码,我一直都没发现,自己手造的样例也没问题。早知道就去打T3的暴力啊!)

正解是区间dp,考场上猜到了。\(dp1/2[i][j][k]\) 表示在区间 \([l,r]\) 时,龙有 \(k\) 个抢吃劵,最少(龙)/最多(\(xm\))能吃到几个龙珠。转移非常神奇。

希望今天下午IOI赛制下不要再读错题、写错板子、挂分了!!

Day5

成功应验上午写的话。

T1喜挂80pts。

T1 算术求值

考试时不知怎么的,一直想不出来要拆式子,加上IOI赛制,感觉自己都要想炸了,死活想不出来,甚至写了161行的暴力,结果前四个样例都过了。只有15pts。最后发现自己就是个**,按理来说,这应该是一道一眼题啊!!!真无语啦

总结:思维能力不行。太容易受别人影响

T2 括号序列

真正的一眼题。

T3 Count Multiset

\(n<=5000\) ,时间复杂度为 \(O(n^2)\)
\(dp[i][j]\) 表示当前填了 \(i\) 个数,总和为 \(j\) 的方案数。 \(g[i][j]\) 表示当前填了 \(i\) 个数,总和为 \(j\) 且序列里不含有0的方案数。

两种转移方式:

  • 对序列加入一个0,从 \(dp[i-1][j]\) 转移过来。
  • 对序列整体加1,从 \(dp[i][j-i]\)转移过来。

前缀和优化即可。

T4 选数

波波的题解也太难评了。。。其实就是个dfs。具体地,可以这样搜:

void Dfs(int i,ll x,ll y,int now)
{
	if(now>ans)
	{
		ans=now;
		cnt=1;
	}
	else if(now==ans)cnt++;
	if(i>=tot)return ;
	ll sum=x;
	int tt=0;
	for(int j=i;j<tot;j++)
	{
		sum*=p[j];
		if(sum>n)break;
		tt++;
	}
	sum=y;
	for(int j=i;j<tot;j++)
	{
		sum*=p[j];
		if(sum>n)break;
		tt++;
	}
	if(now+tt<ans)return ;
	if(x>n/p[i]&&y>n/p[i])return ;
	for(ll X=x;X<=n/p[i];X*=p[i])
		Dfs(i+1,X*p[i],y,now+1);
	if(x!=1)
	{
		for(ll >Y=y;Y<=n/p[i];Y*=p[i])Dfs(i+1,x,Y>*p[i],now+1);
	}
	Dfs(i+1,x,y,now);
	return ;
}

引自 \(dyc\) 大佬。

T5

Day6

省流:蓝紫蓝紫。

呵呵,没有挂地很惨了。

T1 最短路

考场上非常认真的想了一个小时,\(n<=300\),肯定是 \(floyed\) ,思路大体应该是有问题,只有70pts。发现最好不要用 memset ,要赋初值最好就for循环,这样就改到80pts。然后神奇的事情就来了:

\(floyed\) 再复制一遍,就AC了!!!

Q:原因是什么呢?

A:求回答。因该是数据太水了。

T2 方格取数

一个新的知识点:悬线法。洛谷的题解:P3474 【[POI2008]KUP-Plot purchase】

不过讲题时有人提出 二分套二分 这种做法。具体地,将长先二分,再在 \(check\) 函数里写一个二分宽。等待大佬解答。

T3 数组

一眼线段树。非常幸运,考场上没有打炸。飞快过掉第一个样例后,第二个直接炸了,调了一个半小时无果,最终挂0。

正解就是线段树。只不过这个思路挺有趣,将质因数状态压缩。会发现300以内只有62个质数,\(long\,long\) 刚好可以开够。预处理 \(1-1/p[i]\),每次更新质因数状态就用按位或,相当于多了一些质因子。还要多维护一个 \(lazy\) 标记,用来更新质因数状态。注意 \(query\) 函数要处理一下,返回的是一个结构体。

呀!调了一下午,真不知道错哪里了,一直TLE啊!!!

XXS太强了

一眼看出我一下午的错。学了一下午的卡常技巧,居然败在一个函数上。警钟撅烂

Day7

Day8

自认为下午考还是好一点,不知道为什么每条早上考完就不想写博客了。

这几天都没有挂得很惨了,前几天丢失的分数都加回来了??

T1

D

Day9

真的要烦死了,鸽了好多天了啊

T1 传送带

考场暴力模拟思路30。正解是推式子+分类讨论,注意到变方向是在往左走时遇到>,往右走时遇到<。预处理前缀/后缀和,坐标和,注意细节即可。

T2 math

乱搞就过了。

T3 biology

\(\mathtt{2024/7/24-?}\)

放假回来了,玩的真开心啊,补文化课补的好累啊

Day1

真正的开题顺序:3->2->4->1。

T1 Black and White

有好几种做法:括号序列、线段树维护树上直径,还有一些没学过高级算法。推荐看洛谷题解。

T2 White and White

\(O(n^2k)\)\(dp\) 转移方程挺好想的: $ dp[i][j]=min(dp[x][j-1]+(sum[i]-sum[x])%p) $

显然时间复杂度会爆炸,就考虑维护转移中最优的转移点、前缀和即可。

T3 White and Black

考场上推了一个多小时推出来了这里放个题解吧。

T4 Black and Black

考虑构造,随便构造一个1,2,3.......n的序列,可以计算出对应的S和,若S≠0,我们考虑对这个这个序列进行调整 题目有两个限制,一是和为零,二是序列序列严格递增,此时的序列是满足第二个限制的。我们考虑在调整过程中始终满足第二个限制。 调整的方法可以是前缀减或者后缀加,这样都不会改变单调递增的性质。

若此时S>0我们需要调小,可以证明,若A序列存在一个前缀和为正值,或存在一个后缀和为 负值,则一定可以通过上述方法成功调整。

因为A序列的值域为 {1,-1} 所以若存在正值前缀和,那么一定存在一个位置前缀和为1,后缀同理,所以只需要给对应的前后缀都加上或减去S即可,也不会超过限制的值域范围。

Day2

# 又没保存,蚌埠住了

以后写总结就随缘吧

DayXX

T1 随 (rand)

T2 单(single)

30pts只求b数组,两遍dfs,换根dp即可:\(b[v]=b[u]+sum[1]-sum[v]*2\)( \(sum\) 为子树点权和)。

要求a数组,三遍dfs,将刚刚那个式子移项后求和,算出等式左边的和,代入右边,就能算出 \(sun[1]\) ,最后就可以求出 \(a[i]\)

总结:考试时想偏了,只想着打暴力、骗分。说明想题时一定要发散思维,多尝试,或者手算一下样例,找找思路。换根dp(其实应该是dp)还需加强。

T3 题(problem)

\(opt\)=1时直接卡特兰数。

T4 DP搬运工1

DayXX

T1 F

简单题,注意int最大开到6e7,用一些STL也可以,就没啥了。

T2 S

考场上觉得眼熟,一眼区间dp,然后就没有什么进展了。直接不可以总司令喜拿0分。

实际上这道题和曾经做过的交换序列很像。只不过多开一维维护最后一位的字符。用绝对值疑似会挂,但我没有。玄学。

总结:没有想起以前的题说明当时糊里糊涂的改过去的。落实改题时的思维清晰度。

T3 Y

看不懂转移方程。

T4 O

Day XX

最近这几天考得都不太理想了,前几天的好运气给我挂没了?

T1 黑客

简单题。不想说。写了个暴力就不再思考了。考试时像个zz一样。

T2 密码技术

其实吧,T1挂了的原因也有些在T2上,考场觉得自己做出了T2异常开心(实际上挂了10pts),然后看只剩一个小时就去瞎颓T3,结果啥也没搞出来,其实应该去看T1的。

这个题告诉我们:一定不要随便摆烂。

T3 修水管

感性理解的dp题,有时间记得复习一下概率期望。

T4 货物搬运

就是分块,常见模版思路,用双端队列维护右移操作,再维护一个桶。

调了一晚上才发现自己两个数组名打混了,还把 \(front\) 写成 \(back\) ,感觉自己更zz了。

Day XX

怒了!!!长这么大不知道0是自然数!!!T1挂没了,\(又^{inf}\) 垫底

Day XX

1

然后就真保龄了。

没想到居然回归到考试第一天。

数据结构专场。

T1吧,考试时的思路其实就是正解,但想复杂了,想偏了,结果就在歪解的道路上一意孤行,结果居然过样例了,最然这种坚持不懈调代码的精神值得赞扬,但在考场上还要分析一下复杂度,想一下正确性,看看有没有更简单的做法,不要觉得过了样例就能过测试点

T2,真是抽象,考场上看不懂题,尝试贪心,然后就失败了,也没再看了。改题时发现此题其实很简单,分类讨论即可,然后也没啥可说的了,多积累刷题经验吧。

T3,深刻认识到自己的码力。

T4,哎呀呀,考试时打的暴搜,结果因为没开 long long 且 ans 初始化小了全没了,实际上下发文件都能检测出来,但我因为误以为前两个文件是样例然后没看,考试时不能想当然

Day XX

垫底 again。。。

不是,为什么T1有那么多人都做出来,大家都会博弈论??严重怀疑有人ctj自己的实力。

T1,自己考场上写了1.5小时后发现假了,最优策略不是最小步数啊,当场崩溃了,想了一会儿放弃了,去厕所平复了一下心情,才准备打暴力,此时已经过去了2 hours,破大防了。就是说是真的不会啊,最后40分钟读不进去T4的题,选择继续干T1,结果思路已经非常趋近于正解了,甚至想出了那几个01串的关联,一步、两步,但是还是差那么一点,其实这个必胜策略我曾经是会的,但真的就是想不到啊,泪流满面了,总结:T1很大概率是会的,但可能就是有一些细节想不到,死扣太久可以选择去打暴力,心态是最重要的。

T2,考试时只打了10分的暴力,其实自己已经把50分的暴力想出来一半了,只差标记那块。真的是后悔啊,两天考试都是这样,暴力很简单,但就是没有写出来。在不会正解的情况下,打有思维量的暴力是最重要的。后来改这道题的时候,觉得有一些线段树做题经验,就写到博客里了,加油把这道题冲出来吧。

1 hour later。。。冲出来了,真的太不容易了。带来的收获还是挺大的,毕竟线段树题的码量都是相当可以的。

T3,挺奇妙的。

T4没改完。

Day XX

证实了昨天的观点,T1大概率是会的,不要想太玄学离谱的做法,且码量一般不大。

然后T1又挂了。

结果会打的暴力没有,给的部分分不会打,就寄了。

T1,非常简单的小学数学题,一开题瞬间切掉,结果觉得没这么简单,又拿堆做了半天,结果大样例过不去,然后就一直纠结,这告诉我们:简单题不要想得太复杂\(Try\, everything\),别慌。

T2,推式子题,还是非常能理解的。

T3T4均为不可做题。

Day XX

T1,考场上思路没啥问题,但用的是STL里的 \(string\) 字符串的一些操作,注意,翻转操作的时间复杂度为 O(字符串的长度),所以就愉快地T掉了,然后换了 \(hash\) 来写(实际上是换了处理翻转子串的写法),就过了。

T2,简单的分类讨论,少考虑一种情况挂了30.

T3,不可做题。

T4,看了一晚上,其实就是分块+可撤销并查集,有很多要注意的细节。

Day XX

隔了一天没写。

T1,其实是一个非常好想的欧拉路径,样例没有很读懂所以先开的T2。总结,还是要注重基础知识,欧拉路径都忘了,多思考(还有数据是真水,打了个错误的暴搜居然还给了我10分。。。

T2,不知道为啥考场上觉得是简单题,但做了后发现并不简单,当时自己先想了个假做法,误以为n是数列里的最大值(就挺离谱),然后就推了推式子,发现了d的更新方式,再想所有可能的d值在数列里的最大值以内,想尝试预处理,但复杂度过不去,最后发现其实d和 \(ceil(a[i]/d)\) 都在 \(\sqrt{n}\) 以内,好像就做出来了。感觉其实是连蒙带猜做出来的,做出来纯属意外,估计是顺了,但时间过去了一半啊,全都给T2了。总结:想出来正解的概率是极其小的,最多就是幸运,还是要抓牢部分分。P.S. 代码被 \(dzb\) 大佬 Hack 掉了,卡的好呀,果然正确性还是不行,%%%%%%%

T3,,觉得是个很神秘的计数题,要么是傻瓜数学题,要么就是dp,尝试用数学方式求解,发现了超级树层数的递推性,然后就做不出来了。。。正解和考场上想的是有一定吻合的,自己卡着了的地方其实就是dp分讨的关键:根节点!但是没有想到状态设计,这真的太没有办法了。

T4,居然看差了,没看到a=0或b=0!十分没有了。奇妙の区间dp。

Day XX

希望以后不要再出这样让我破防的题了。

考场上打了3个小时的暴力,结果1分没有,全靠最后20分钟T1的乱搞了。

T1,思路是个人都能想到,但想的有点复杂了。说不会吧,考后也能独立改出来;说会吧,考场上也没打出来。所以差在哪里了呢?(但貌似大家T1都挂了)代码能力不行?

T2T3T4打了三个小时的暴力,结果0,这说明什么?自己的暴力实在是太暴力了,完全没有区分度,显然就没有分了(但也有知识性的问题)。还有就是不顺 总结,打暴力也是要有脑子的,别随便挂几个dfs就上去了,dp、数据结构优化dfs啥的也要试试。

Day 8/15

吸取了昨天的教训,今天用尽了我的智慧去想T1。

但T1还是挂了,原因有很多:

  1. dp式子其实推的就不对,要用组合数,否则会RE(越界)。
  2. 组合数一定要递推来写,否则1e12会爆炸。
  3. 取膜要注意,只要有减法就要加上模数再取膜。

然后就调了挺久的。。。一直以为是取膜的问题,当然确实出错在这上面,d的大小是1e12,赋值前要先取膜!!!疯狂取膜ing

T2是个暴力就能水过的题,考试时一个很暴力的思想其实就可以拿76pts。我调了一个小时的最小环,自己手造的样例都没过,根本就没有尝试其他做法。这真的太悲哀了,dfs都不带这样子的。当然最后用dij和塔尖卡过去了。所以这是运气还是勇气 (?)

T3可以暴搜。但考场上直接弃了,原因是没有时间。

T4也是一搜即可得20pts的题,问题是我暴搜都打得有问题,而且错的很奇葩。不知道为什么这样想,或许是T1过了样例太兴奋而导致的吧。

8/16

就是说双重否定到底等不等于肯定啊

8/17

T3贺错板子,T4数组开小,喜挂95pts

连着垫了4天底了,md天天挂分

T1,二分,考试时读不懂题,眼看着暴力40拿不到了,但就是死活读不懂,最后发现自己的理解力惊人的奇葩,\([a,a+1]\) 居然说的是这个区间,而不是这两个点,,已经不止一次发生过这种事情了。

T2,没啥可说的,正解思路挺暴力的,感觉可能再等几年才能自己独立想出来?

T3,,区间dp都写对了,for循环写错了,然后55pts全没了,考试时简直就是个**,咋忘了板子呢。结果正解是二分,属实二分专场了,但有一些优化思路要多积累。

T4,花了2个小时的心血,然后数组开小,貌似还卡常了,总之就是非常离谱的没了40分。正解好像是CDQ分治+珂多莉树+扫描线+树状数组,啊,这20分不要也罢。好好去学了一下set。

8/19

考场上已经有摆烂的趋势了,主要是没有水题了(唉,当然其实拼的就是暴力。发现自己经常会干一些奇葩的事情,花费大量时间打一些没有分的暴力。这告诉我们:在自己没有把握能打出趋近于正解的代码的情况下,先拿下暴力分

T1,是我思考最久的题,看出了合法边存在的性质,也想到了奇环和偶环,但没有想到树上差分这个思路,其实本来是有能力去打25分的暴力的。顺便补了补以前的坑:DFS树

T2,纯纯纸张了,很像线段树的修改查询方式了。啊,还是码力的问题,要多练啊。每次考完试都很后悔。

以下是自己颓废时的思考(当然不喜勿喷啊 每次考场上,代码打完并开始调试时,时不时会蹦出一些新的思路,这时候我们会面临着两个选择:
  1. 继续调试完代码,没准就对了呢。
  2. 试试其他方法,有可能得的分更高呢。

这时候我们就陷入一种纠结中,而这种纠结也有可能成为影响代码质量和效率的因素。从客观角度来讲,第二种选择会使自己达成目标的概率更高,但会消耗更多的时间。但如果只是一意孤行,也不一定会有好的结果。所以有没有大佬来解释一下蒟蒻的困惑啊

评价:今天晚上过度颓废,甚至没有改完T2,警钟长鸣。

8/20-8/21

两天的放一天写了(原因是太懒)

这两天的题都是打满暴力就能收获满满,当然是要有思维含量的暴力。20号的挂分不严重,但缺少分析和猜测的能力(指T3输出1),改题的质量没有前几天好,因为波波还没回来!!!然后大家都乱哄哄的,效率低下(但气氛很和谐)

21号就各种挂分,T1加上卡常就能拿到99pts的好成绩(但考场上并没有,T2又犯了老毛病,数组开小+统计每一位的元素要用 +=,T3组合数学打挂了,发现自己不会插空法(好像会?),总结就是挺无语的。加强改题。

8/22

今天到晚了,结果赛时要打 freopen (没人给我说啊),然后喜提0分。

但实际上即使加了 freopen 后分也没多少

还是各种寄,最主要的还是题太难,但自己T1的简单dp没有想出来不太应该,困得眼皮都睁不开了,然后果断放弃了,打了一个半小时的T2k=3,没分,实际上暴力搜索就可以。心态也不是很炸,改题时特意复习了一下斜率优化dp,还学了了一下CDQ分治和高中数学,觉得非常有意思啊。没想到今天居然是最后一场,就这样草草地以保龄结尾了,感觉还是挺遗憾,但也无所谓了,过去的事就让它过去吧,好好改题才是最重要的。

有时候吐槽一个暑假没进步,其实还是学到了很多的,包括考试该怎么拿分,考不好怎样迎接下一场考试,渐渐地开始思考,开始习惯这种生活。自己的心理承受能力还是挺差的,连着几天考砸就会颓废,就会逃避(这就是我洛谷个签的原因),就会怀疑自己。但都挺正常的,有时候发泄一下情绪也可以,只要保证不影响自己往前走,偶尔颓废也是可以的。(但切忌不要太频繁)。一定要坚持下去哦。

还是总结了一下自己弱的原因:

  1. 考试时不会拿分,不懂得分的性价比。打暴力的能力要慢慢练,坚持思考就行。
  2. 改题时可能看完思路就直接去看代码了,没有自己思考的过程,也影响了自己的代码能力。
  3. 前面的坑比较多,这个要慢慢填,别再挖坑了!!!

还有一些等自己继续训练再发现吧,总之:即使现在失败也没关系,扛过去,一直朝着目标坚持就可以啦。

暑假的故事就过去了。没想到居然首尾呼应了,自己还是自己啊。


I must away

Over hill and under tree

Through lands where never light has shone

By silver streams that run down to the sea

Under cloud,beneath the stars

Over snow and winter's morm

I turn at last to paths that lead home

posted on 2024-08-23 14:30  zhouyiran2011  阅读(11)  评论(2编辑  收藏  举报