省选模拟赛2023/3/22

博主回顾了一场算法比赛的时间安排与解题思路,对T1、T2、T3三题进行了深入反思。T1未能发现关键性质导致失败,T2忽视了快速傅里叶变换(FFT)的应用,T3使用DFS复杂度过高。总结中认识到比赛中应更注重算法优化和预处理,同时提出正解中的一些高效策略,如动态规划和二进制特性利用。

比赛时间安排

7.30-7.45
做基础准备+看题
t1 spj!但是要输出最优解,没法骗分,暴力能做
t2 暴力可以搞一下,感觉m=1的也可写的样子
t3 概率?!表示题目意思没太读懂,万一后面的追上前面的怎么办,不会不会

7.45-7.55
t2暴力简单,先写了

7.55-8.10
t1 搞了一个dfs预处理+找答案

8.10-10.30
中间感觉特别困,睡了一会,然后想t2的m=1,发现就是找a[1]~a[n]&i有奇数个1的数字个数,本来想预处理,但是失败了,这么看怎么像一个多项式的算法,所以放弃了
然后看t1的第二档分,毫无头绪,想打表找个规律,未果

10.30-11.15
说改题面了,这样我的疑惑就解决了,可以写t3暴力了,想到之前有一个弹球的,我标记的并不是每个人,而是这个时刻的每个位置上的状态,进行dfs,枚举每个状态,如果有碰撞的话还要再枚举,感觉复杂度巨大,但是算了一下,肯定跑不满,能过15分吧(也许),然后就开始写,感觉写了好久,并不清楚数组在每次递归时候的状态,于是就每次开一个新的数组,然后查bug查了半天,发现是把n+1,写成n了,好在调出来了。样例对了,但是不知道结果对不对,自己也不知道还能怎么造数据了,随便试了几组,发现跑的飞快,n=20的也能过,惊了,妄想拿30,很大概率爆0吧(哭)

赛后总结反思

  1. t1打表打错了,打成答案个数了,应该直接求最优,说不定就能发现<=2的性质
  2. t3dfs有思想性问题,少考虑了一种情况,但是这道题dfs写起来应该极其复杂,不好维护,订一下dp就行

与正解的差距

T1

正解需要找到一个性质,关于二进制下3的倍数的,这次记住了,下次有类似的说不定能自己推出来嘿嘿

T2

首先自我批判,对fwt太不熟悉了,题目那么明显都没想起来,m=1就是一个裸的,已经了解
而m>1的情况就是在此基础上拓展,并进行容斥,写完之后发现只有80,找到对于每个m都设置一个f数组太费时间,可以把他们合并成为一个,fwt的结果并不受影响,所以作一个合并就是满分了

T3

n^4的dp还是比较容易理解的,考场上其实可以试着写一写。
这个n^3的优化就非常妙,在更新状态的时候,不枚举前面的每一个状态,而是在更新这一层的同时,更新下一层将要用到的状态,减掉一维循环,太强了
最后的正解基本想法是把这个区间分成两部分分别计算贡献,和之前有一个非常像,所以各种dp的模型还是要记住一些的,然后大体就是钦定左边的R全死了,右边的L全死了,然后从终点向起点转移,转移方式可以学习,这个状态设置嘛,有待研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值