考试心得3

2024/9/15

link:https://www.gxyzoj.com/d/hzoj/contest/66b0925b7509073c6b14ab11/problems

考试时感觉眼睛想流眼泪,感冒还没好( 做梦一样考完了

还挺后悔的,暴力分很多,T3打了1.5小时0蛋,发现自己就不应该写二分啊

T1,暴力40分走人,不会状压dp,考完后看着wsq的代码一点一点理解了,但预处理挺奇妙的。我何时才能自己推出状压式子啊,阿布,是何时才能想出状态设定啊,没底气。。。

T2,暴力40分走人。貌似是细节题,不想改。但最后改完辣!

T3,前两道题加起来一个半小时就打完了,此题暴力却搞了甚久,始终认为它是二分,导致写得全错了。本来想挽救一下,但实在没想到真的就是无脑枚举啊!考后改了改(指改了1小时)就拿到79分的好成绩,加上map的优化(指无脑记录重复数据)即可获得99pts!!虽然这一分让我调了2个小时,但真的,双哈希也能卡过啊!!!这个题告诉我们:宁可打无脑暴力,也不能空手而归,还有,自己曾经总结的哈希区间求值是从1开始的!!!一定要看仔细!!!

T4没时间了,10分就丢了。又又又......又垫底了。T-T

2024/9/16

link:https://www.gxyzoj.com/d/hzoj/contest/66e776d4f8a2945801bcd317/problems

祝wsq生日快乐,可惜她没来

但波波买了奶茶,还是挺好的(不甜

今天挂38pts,垫底again,就是说四五十分就差了20个人左右,分差头一次真么紧。

省流:打暴力的两天。

T1,数据大水题。原题好像是dp和线段树,应该挺难的,但由于是波波的随机化数据,很简单的能被HACK的代码也能A,但自己因为手造的数据卡了两个小时,100->82,,,

T2,考场暴力数组开大TLE,20->0,正解是dfs+线段树查询,还挺简单的,自己始终卡在一个地方:(id+1)>>1不能写成(id|1)>>1,原先线段树这么写是因为乘过2后必然是偶数,加1就相当于或1,但这里的+1就不能这么写,卡了俩小时,,,,

2024/9/22

link:https://www.gxyzoj.com/d/hzoj/contest/66b0c7117509073c6b151321/problems

表示自己大部分时间都去搞T2样例了,导致T1的50分没整出来。本来T1写的16pts的 \(O(n^3)\),挺无语的,不知道为啥自己枚举完区间还要遍历一遍,考场代码改两行就50,啊。更无语的是,我加了个错误的优化,导致我原来的16pts都没有了,啊啊啊

T1是线段树,其实考场上想的错误的优化是能延伸到正解的。预处理 \(1-n\) 的mex值后,从一个区间转移到下一个区间时,如果下一个区间的mex值大于前一个区间,那么这个区间的mex值就要变小,所以要区间修改、查询、求和,用线段树,但考场上我想错了。

T2,考场上不知道推了多久才推出来样例,发现是贪心后狂写。喜提64pts,考后,把中间找到合法区间起始点的循环改成一层,开个 long long 就过了。然后又试了试,把考场交的第一版代码开个 long long 也过了,就是说你一定要相信波波的数据qwq

感觉T3还是挺抽象的,但看完Dyc的题解后好像好懂了一些,结合着luogu题解勉强看懂,挺巧妙的

2024/9/28

link:https://www.gxyzoj.com/d/hzoj/contest/66f746c1f8a2945801c53a36

改完T2精神状态极差,我考场上为什么还自信的认为我A了?

T1,考场上第一次推出dp式子!但我用在线编译发现,它好像会RE,然后就把数组开到1000,就只剩40了。考后把自己定义的dp数组拆成两个就不会RE了(本质上应该是滚动数组优化),然后就A了。

T2,大型分讨现场。考场上自信满满地打了一个半小时,一行一行地对大样例,一点一点改,加各种特判,本来觉得应该没问题了,结果0。发现大样例最后一个多数出了一个数,改后就是40了。自己再改了改,到55就上不去了。然后看dyc的代码,发现自己应该把特判的内容写到填数的过程里,写了写,到70,70 70 70 一直都是70,死活上不去了,最后 \(wme\) 学姐(太感谢她了,否则我可能到晚上都调不出来了)给我说了说,我懂了,分类讨论时 当前位如果是0 且不能删去,开头的指针应往后移一位,但加上这个还是65,显示 User output longer than standard answer. 最后发现没有判断没有删除的情况,加上终于A了,真服了(很抱歉自己写得像个流水账

2024/10/2

link:https://www.gxyzoj.com/d/hzoj/contest/66e55d2ef8a2945801ba51a6

自闭了。牙疼。想去打J。不是很想写总结。

2024/10/3

link:https://www.gxyzoj.com/d/hzoj/contest/66fd3b02f8a2945801ca8d1e

还是来写了。

T1,不会用fc,一个一个调大样例,感觉眼睛要废掉了,z[i]=0依然没有写出来,才发现n的长度为1000。

T2,60%的数据很可做,写了个记搜后一直调不出来,调了1小时,果然似了。下考后把传送门的入口和出口换了一下,就60了,发现自己用的是填表法却写成了刷表法,zz极了。

T3,Solution:

容易发现这是一个与斜率有关的题目,这种题目通常通过维护凸包,或者李超树维护
跨过\(p_i\)的区间容易转化为:以\(p_i\)为右端点的最优+以\(p_{i}+1\)为左端点的最优
两个问题同理,以右端点为例
\(sa_i=\sum_{j=1}^i a_j\)\(sb_i=\sum_{j=1}^ib_j\)
最优即\(\max_{1\leq l\leq r}\{(sa_{r}-sa_{l-1})-k(sb_{r}-sb_{l-1})\}\)
\(sa_r-k\cdot sb_{r}-\min_{0\leq l<r}\{ksb_{l}-sa_l\}\),离线之后李超树维护直线即可
时间复杂度为\(O(n\log n)\),常数略大,空间复杂度为\(O(n)\)

看不懂,去学李超树。

2024/10/4

link:https://www.gxyzoj.com/d/hzoj/contest/66ae19497509073c6b126cb8

有没有人能讲讲考试数组应该开多大啊?开小RE,开大还RE

对不起,又鸽了一天。

2024/10/6

link:https://www.gxyzoj.com/d/hzoj/contest/66ffed01f3395ed072efb1db

国庆假期没写多少总结。自愧++

现在打模拟赛很少去想正解了,每个题开题5分钟就去打暴力,非常节省时间,且性价比很高,有时候甚至打着打着暴力就想出了正解(当然这个题肯定是很水的),也很方便写对拍。

挂分:T2数组开小了,写的是 \(O(n^2)\) 的啊。

T1非常煎蛋。考虑容斥,把问题转化为 \(i∈[1,1e5],i=gcd\) 的方案数。还可以转化为 \(i∈[1,1e5],i|gcd\) ,(这并不是什么高大上的容斥,只需要减去 \((2*i)|gcd,(3*i)|gcd......(j*i)|gcd\) 即可)\(f[i][j]\) 表示第 \(i\) 行,\(j\) 的倍数有多少个,总共的方案数即为 \(∏(f[i][j]+1)-1\) 再处理一个数组倒序记录答案即可。

T2,一看数据就是状压,状态枚举,暴力加边,判断是否连通即可获得40pts,但我数组开小了,复杂度是 \(O(n^2)\) ,但我只开了10倍,20分啊啊啊。正解思路很巧妙,代码更巧妙,一个强连通分量的 出边 的 并集 所指向的 点集 肯定是不连通的,标记为不合法,最后全部状态枚举计算即可。代码放一下:

点击查看代码
cin>>n;
for(int i=1;i<=n;i++)
{
	for(int j=1;j<=n;j++)
	{
		int x;
		cin>>x;
		if(x) e[1<<i-1]|=1<<j-1;//出边
	}	
}
e[0]=(1<<n)-1;
for(int i=1;i<(1<<n);i++)
{
	e[i]=e[i^lowbit(i)]&e[lowbit(i)];//并集
}
for(int i=1;i<(1<<n);i++)
{
	if(flag[i])
	{
		for(int j=e[i];j;j=(j-1)&e[i])//枚举子集(一个很常用的方法)
		{
			flag[i|j]=false;	
		}	
	} 
}	
ans=0;
for(int i=0;i<(1<<n);i++)
{
	ans+=flag[i];	
}
cout<<ans<<endl;

T3,糖。

T4跟以前树剖里的染色几乎一模一样,维护方式都是相同的,树剖区间求和也可以参考一下。改题时这道题直接三发入魂,不到10分钟就AC了,rp神秘定律

P.S.月考寄中寄(想当年 \(dzb\) 大佬发了这句话后直接年一了,%%%),考的还没有初试J好(满分100),诚心祈祷。

疯狂颓颓颓,看游记,背图论板。

2024/10/20

又是爆炸的几天,分数永远比考场上估的低,根据我长达三个月的观察后,发现自己挂分主要集中在以下几点:

  1. 眼瞎。不用解释了,比如看错输出顺序,看错题目条件等等,解决方案:每个题读三遍,包括但不限于题面上的所有字。

  2. 数组开大/开小。比如开了个85^4的数组。解决方案:

  3. 漏判/少判边界条件。常出现在dfs或bfs中。解决方案:对自己重拳出击,认认真真检查代码,尤其是判断当前坐标加上/减去某些值的时候是否越界。

  4. 考虑不全面。其实跟上面的差不多。不全面因素主要有:计算方案数时一定要注意是否合法。

  5. 数组/变量打反。解决方案:一定要在头脑清醒的时候打代码!!!

回归正题。今天又挂了。

T1,考场上写的57pts的做法,但是炸成35,原因就是边界条件没判全。发现自己的逻辑思维和其他人很不一样,大家都是枚举这个可以反转的范围,只有我枚举的是每次向左减几或向右加几,也导致我看正解困难了许多,所以我卡常卡过了。题解思路还是很好懂的,定义一个 nxt 数组(链表),记录着每次+2时下一个到哪里,不断往后移,因为有可能重复,所以这相当于一个剪枝。

T2, 只写了3分,还因为没判0挂了。不知道考场上自己为啥不打dfs的14分,好像直接忽略了,真服了

2024/10/21

又应验了上面写的眼瞎,T2没判-1。。。

T1是我考场上开的最后一道题随便打了打暴力,发现自己的搜索连 2 3 都跑不出来,直接 abandon 了。正解吧,代码是简单的,思路是奇妙的,主打这就是一个分类讨论。给的部分分还挺能启发的

T2是我开的第一道题。花了0.5h奋力打50pts的暴力(实际上是40pts),检查了好几遍代码,觉得肯定没问题了吧,啊,然后就0了。然后板有问题。

2024/10/22

最抽象的一集。

T1签到题,本来要打部分分的,后来推了推发现直接排序输出就完了(瞬间找回了自信),开了个vector存储、删除,觉得写起来挺简单的。大样例对了一些就扔了不管了。觉得肯定能A吧。然后考完看排行榜,哇塞,T1怎么爆炸了啊啊啊,咋能TLE呢。然后一问发现vetor删除操作复杂度是 O(n) 的,那我用vector图啥啊。原地裂开。

T2发现只会搜,那就搜吧,写了写,过了第一个样例,第二个样例死活过不去,然后就卡着了,特殊性质随便蒙了个上去,结果显然0分。正解是本质不同子序列计数问题,bitset开个1e5*2e4的dp数组,dp[i][j]表示长度为i,末尾为j的个数。前缀和优化即可。至于%2,因为不是质数,直接判断组合数奇偶性,位运算转移。然后自己是真的啥也想不出来啊。

转移是简单的 优化是 easy

T3是我考场上最失败的一道题,我花了1.5h想暴力、打暴力,看到ABCD这么多性质肯定有会写的,6e3那就想想 O(n^2) 的暴力呗。仔细读题(第一遍读错了)发现好像没那么好写,算了先写再说,结果发现第二个样例过不去,仔细分析了一下,发现好像只会 O(n^3) 的5分暴力。又裂开了啊。然后就只剩5分了,写了100多行,啊。然后波波发的std700行代码。鉴定为不可做题。

T4因为只剩半小时多一些了,赶紧写搜,结果没调完。正解也挺抽象,想弃了。

达成成就:4天模拟赛挂176pts


爆零就爆零,天天好心情个头

posted @ 2024-10-04 14:39  zhouyiran2011  阅读(56)  评论(0编辑  收藏  举报