GDKOI2023普及组游记

2023-03-06 GDKOI2023普及组游记

Day -6(3.4)

晚上打了场AtCoder,$rank 1515$,切了5题,信心++。

打T5的时候心态不稳,没验证好复杂度就交了,错了7次,下次注意。

Day -5(3.5)

早上8点多就回校了,假期减了一天。

上午模拟赛,考得不好,pts和rk就不说了,信心–。

比赛补题地址

T1

签到题,枚举两个相同字母的位置,计算把这两个字母之间其他的字母扔出去的交换代价,在交换代价合规情况下找最大可能的连续相同字母大小。

T2

DP,分成五种情况讨论,$f[i][0]$表示当前位置为'0’,$f[i][1]$表示当前位置为’*’,$f[i][2]$表示当前位置为'2’,$f[i][3]$表示当前位置为'1’左边有地雷,$f[i][4]$表示当前位置为'1’右边有地雷。然后讨论各种情况的状态转移。

T3

一种神奇的题目,先在原序列中把每个连续上升子串内部标记成同一编号,然后讨论几种可能的修改情况:1)在该子串前方或后方修改一个,使其长度+1。2)如果两个连续子串之间可以通过修改前一个子串合并,那就合并。3)修改后一个子串。

T4

需要推一推,具体如下:

首先求平均数在$[l,r]$等价于求平均数在$[1,l)$和$[1,r]$的数量,后者减去前者即为答案。

以区间$[i,j]$的平均数为例,如果平均数需要满足这个性质,那么每个数减去$r$后求和的值必须$\leq 0$。

即为$a[i]-r+a[i+1]-r+……+a[i+j-1]-r \leq 0$.

设$b[i]=a[i]-r$,则$b[i]+b[i+1]+……+b[i+j-1] \leq 0$.

容易联想到前缀和,设$s[i]=\Sigma_{j \leq i} b[j]$,可得$s[i+k-1]-s[i-1] \leq 0$,即$s[i+k-1] \leq s[i-1]$.

发现$i-1 \leq i+k-1$,所以求逆序对。

Day -4(3.6)

开始停课,第一次全天停。

上午提高难度模拟赛,$160 pts$ $rank 1$,感觉良好,信心++。

改题可以看DengDuck's blog

比赛补题地址

T1

官方题解:

其实只需要简单地证明一下,分析几种情况:

  • 两个序列$1$的个数相同,但是顺序不同。例如:$101$和$110$。 最后一位不一样,而$1$的个数相同,这就意味着其他位置必定还有一个数位不同,所以对$2$取模为$0$。
  • 两个序列$1$的个数不同,例如:$001$和$110$。 这时候我们去掉第二个数列的一个$1$,并把第一个数列该位置的数也去掉,就变为了上一种情况, 再加上一个不一样的,就变成了上一种情况,所以对$2$取模为$1$。
  • 其他的可以以此类推扩展,具体看上面官方题解。

T2

官方题解:

还有一个写的不错的题解:这里

个人思路

这里的斜边其实都对应了两条直角边,所以只要枚举出两条直角边的长度(以下用$a$、$b$表示)就可以得出这条斜边的长度。

再分析发现这条边上可供选择的点有$\gcd(a,b)-1$个(可以使用相似三角形证明,题解中此处有误),而我们需要从中选择$n-2$个点(两个端点强制选),而相邻两个点的距离至少为$k$,所以得到$C_{g+1-2k-(n-3)(k-1)}^{n-2}$(在$n$个点中选出$m$个点,并且两个点之间间隔至少为$k$的方案数为$C_{n-(m-1)k}^{m}$)。

T3

DengDuck的题解

关于T4

它超纲了。

期待周五ing。

Day -3(3.7)

停课的第二天,还是提高难度模拟赛。

本来:全部人$rank 5$,初二$rank 1$。

因为计算错误和该死的Windows系统变成了:全部人$rank 9$,初二$rank 3$。

信心–。

T1

期望简单题,可能需要点感性理解,继续挂上DengDuckの题解

T2

其实是$3n+1$猜想(角谷猜想)的运用,知道了之后就简单多了,但是还要注意负数的情况。

T3,T4

待学习。

另外放上本地测试时遇到的神奇测试点:

生地会考报名收走了身份证,这个问题不解决了有待解决。

Day -2(3.8)

成功躲过了月考

今日の教训:

$$ 我们不是数学竞赛\\ 很多时候快速找到正解已经很不错了\\ 不一定需要证明\\ 打表都是可以的\\ 实在不行再跑一些暴力验证一下\\ 一定要灵活\\ $$

T1

一道简单$DP$,设$f[i][j][0/1]$表示前$i$个数里使用了$j$次修改,$0$表示当前不是山谷,$1$表示当前是山谷。

如果当前本来是山谷,那么转移如下:

$f[i][j][0]=f[i-1][j][1]$

$f[i][j][1]=f[i-1][j][0]+a[i]$

如果不是那么可以修改成山谷,转移如下:

$f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1])$

$f[i][j][1]=f[i-1][j-1][0]+min(a[i-1],a[i+1])-1$

T2

手推一下可以得到以下结论:

当$n=3$时,答案为$a[1]-a[3]$。

当$n=5$时,答案为$a[1]-2*a[3]+a[5]$。

当$n=7$时,答案为$a[1]-3a[3]+3a[5]-a[7]$。

可以发现奇数情况下,系数均与杨辉三角有关。

如果直接$n^2$递推会超时,而杨辉三角又与组合数有关,所以可以通过公式法求解。

偶数情况可以通过一次操作转化为奇数。

T3、T4

待学习。

Day -1(3.9)

复习了一整天,但是复习的东西好像都没用上……

Day 0(3.10)

上午还是复习,下午三点坐车去广州,广州市区很堵,快五点才到酒店,然后去学校报到。

晚上去看广州塔了,喝了教练请的饮料。

复习了一会,又看了会电视就睡觉了。

Day 1(3.11)

上午听讲座,讲了一些数据结构。

下午比赛。

先想了第一题,感觉还行,打了一下才发现不对劲,朴素做法时间会炸。

想了一会没想到,就开了第二题,很快想到了宽搜,直接打了一份代码。

开了第三题,感觉很难,打了个表就跳了。

第四题也不会,打了个暴力,水20分。

又回头看第一题,想到了和正解差不多的思路,但是没算好空间,以为开不下数组,最后打出来的代码挂了。

晚上和$DeepSeaSpray$一起复习,和昨天一样看了会电视就睡觉了。

Day 2(3.12)

上午听讲座,宣传了中大、学习到了乱搞思想

然后就是令人激动的滚榜环节,发现自己前两题都挂了。

T1 T2 T3 T4 Total
估分 50 100 0 20 170
实际 30 80 0 20 130

差距有点大……压到了银牌线。

下午Day2比赛。

第一题看了一眼,直接切了。

第二题打了个暴力水分。

第三题还是不会。

第四题没想清楚,赛场上以为很简单……

吃完晚饭就回校了。

Day 3(3.13)

晚上去看了分数。

T1 T2 T3 T4 Total
估分 100 20 0 50 170
实际 100 20 0 30 150

还算不错,等排名,看看能不能保持住银牌。

总结与反思

总分$280$,全省排名$54$,拿下银牌。

下次要注意把问题分析清楚,还得计算好时间和空间复杂度,提升思维,争取更好的成绩。

Licensed under CC BY-NC-SA 4.0
zswangziye's Blog
使用 Hugo 构建
主题 StackJimmy 设计