zoukankan      html  css  js  c++  java
  • BJOI 2021 游记

    我的第一次省选!

    也许也是最后一次了。

    毕竟学的晚,最多也只能参加两年省选。

    3.20

    第一次集训,早上考三个小时,一开题就发现 B 之前见过原题,但是并不会解法。。40 min 整完 A 和对拍就去冲 C 的正解,在我印象中 B 那 20 分思维难度不太与我匹配,因此写无脑的 C,写了 1h,然后对拍老不对,调试了好久,后来发现貌似是暴力写挂了,测极限数据却被卡常了,1.4s,那确实不太行,xtq 说不开 (O_2),那我岂不是不太行。

    最后出考场很自闭,跟暴力分一样。

    初发分居然 rk 1,(100 + 80 + 100),就好像梦一场,T3 爬过了,震撼。一堆人写挂了,测的也有问题,更新榜是 rk 2,可能是我现场打的 oi 比赛最好的一次了,个人的优势也许是代码水平还算凑合?毕竟思维太弱了。

    T2

    讲题人精髓完全跳过了,让人怀疑是临场强行让上去糊弄人的(

    这里读完 std + 自己的一点优化写一下题解:

    首先考虑插入 (1, 2),注意到为了最后合法我们仅需要让当前序列中空隙必须插入用 (3, 4) 隔开即可,因此只需知道当前序列有多少个相邻相同对,这步可以 (O(n_1^3)) DP。

    然后考虑忘空隙中插入 (3, 4),利用刚才的数组可以预处理出一个 (g_i) 数组流出恰好给 (3, 4)(i) 个空(定义这个空为段)的 (1, 2) 分配方案。

    接着考虑把这个空分成三组,注意到 (3, 4) 在一个空里插的必须交替,因此 (3, 4) 在一个连续段中数量差不超过 (1)。如果枚举了 (3) 数量 (>) (4) 数量的段数,那么可以推出 (<) 的段数。

    我们可以用 (O(n_1^2)) 枚举这样的 (3>4, 3=4, 3<4) 的段数 (a, b, c, a + b + c + s),我们先把这些段分成这三组即一个多重集组合数:(frac{s!}{a!b!c!})

    紧接着就是本题精髓,我们目前要解决的是把固定数量,这样分配进去,让他们和恰好等于题目要求并且满足刚才的限制,看起来不太能做。但是考虑构造一个映射,如果我们确定每个段里 (B) 的个数,还有刚才的分组信息,是否就可以不重不漏映射出一组方案呢?确实是可以,但是要注意 (3=4) 的情况有两种形式,所以外面 ( imes 2^{b}) 就可以。

    问题变成了求一个长度为 (s)(x_i) 数组满足有 (b) 个位置 (x_i ge 0),剩下位置是正整数的方案数。考虑建立一个映射,将 (b) 个位置 (+1) 就变成了经典问题。

    这个局部 (+1) 还是蛮神奇的。

    到这里就做完了。

    3.21

    今天蛮自闭的,早上想着换一个机房坐,结果开题发现一道自己见过但不会。

    之后一直爆肝这道也就是 C,最后忘记 100pts 咋写了,写了个 70 pts,但最后跑太慢无奈打了个表,剩下就没时间了,打了 AB 的暴力。后来发现 A 很简单,只是一个猜结论。。自闭了。

    最后全场就我 A 低于 (80) 分。。耻辱。

    不过好在 C 的 70 分还很有用,稳在 10 名。感觉这个排名已经非常满意了,希望能稳在这里(flag

    A:结论连通图可以最后变成完全图,考虑每次缩一个长度为 3 的链变成一个环缩成一个点。我这都不会,就这, 就这。

    B:考虑大力容斥,枚举强制选的禁点,强制选的行列,要统计剩下可选的点,斜着会不好弄,考虑三个共点只会出现在 (i, n - i) 这种形式,所以每次把这些行列放在一起暴力枚举情况做背包。

    C:考虑最后对调值域

    3.27

    今天完全做了暴力老哥,非常的逊。

    最后还是 rk10 其实能保持在吊车尾挺好的蛤。

    学到的东西:

    • 考虑联通块建图不行的时候考虑能不能把点拆开这样更加形式化。

    • 神奇的黄金分割比

    • 通讯题也有平衡思想

    • T2 分治!!所有选段问题其实都可以考虑就是链上分治。、

    • T3 考虑函数性质可以考虑迭代、找规律等等。还有就是一个货仓寻址问题的扩展版本,通过平移变换来转化成原问题。

    今天的 T1 jkp 讲了还不会是真的逊。

    3.28

    越来越逊。

    学到的东西:

    • 有时候要猜结论不能硬刚。
    • 考场也想到了当成多项式可时间不够。
    • 一堆多项式的东西。

    4.9 Day 0

    摸了一天鱼,回家很快便进入梦乡。

    4.10 Day 1

    早上起来有点困困的,可能是睡的太多了吧。

    进场,看了一会 T1 发现自己好像会把一副牌拆开,双指针,一个值域区间合理等价于 (n) 个都有一个在,并且只有下面在的不超过 (le m) 个,瓶颈在排序 (O(n log n))

    然后写了,过了大样例,拍到结束,大概有一百万组(?

    然后就是自闭 5h,BC一个不会,B 这种构造我做过一个类似的 APIO 题,所以就一直想用 ((1, 1), (i, 1), (1, j)) 这样状物的去表示 ((i, j)),构成一个差分约束啥的,但是写到一半发现还有和的限制,自闭了。。C 这个东西我先写了个按照题意模拟,然后改成 (O(mn^3)) 这样的,因为动态加边维护强连通分量这个东西我一点不会。。后来发现只用写很短,枚举一对点对的贡献二分就可以 (O(n^2mlog m))。。感觉 (44) 很悬,但是大样例跑的还行。

    最后一会还是不会 B,连 (m = 2) 都不会也是没谁了,一直陷入自己的怪圈里。

    然后最后 B 整了个随机生成,那必然是爆零了。

    预计得分大概是 (100 + [0, 35] + [16, 44]) 这样的,这破东西估计最少也都三四十名了吧。。

    回家自闭睡了会,晚上很晚也没有睡着很自闭。

    4.11 Day 2

    第二天到了考场,结果回收系统上不去睡了半个小时。

    后来起来,看了三个题,好家伙,一个不会。又想了半天,总算会了 T1 的两只 (log) 做法,那就写呗,写了一个小时过了大样例,貌似是 (0.8s) 不开 (O_2),感觉还是不错的。又搞了半个小时整对拍,又双叒叕拍到结束。

    BC 又不会那真的是经典回放了,一开始 B 还看错题了,暴力写挂,然后发现居然可以 (O(n!n)) 算贡献啥的,那我写暴力干啥呢?

    C ,我实在是太愚蠢了,连多项式做法都不会,咍咍,连断掉 (u) ,DFS 都不会,我还有救吗?最后整了个树的部分分,自闭了半小时,就结束了。

    大概得分是 (100 + 60 + [10, 25])

    感想

    可能一直以来都是一个人在自己乱整 OI 吧,可能方向走的挺偏的。

    对于若干简单算法的应用,需要灵活转化的题始终学不来。这段时间反而学了很多没有用到的科技,最终考试用到最难的算法也只有线段树。

    如果还有机会,会着重放在 CF、AtCoder 这上面吧。不要再做板子了。

    Update:回顾这次比赛,感觉没有挂分是最大的特点,但是 matrix 的几乎爆零和 d2t3 的不会 dfs 真的太屑了。要多练练打暴力能力(

    摸鱼就摸鱼,训练就训练,要有详细的计划,不能整天随便乱看,一点作用没有。

    4.15

    yls 说貌似进队了,rk 7 左右,还蛮震撼的。感觉学校还蛮好的,居然有这么多优惠政策,可以天天旷课肄业了

    今后的计划:

    1. 每天一套 CF div1
    2. NOI 往年题做
    3. 一定要补题!
    4. CF、AtCoder 比赛尽量参加练手感。

    有意思的题写题解记录下来。

  • 相关阅读:
    js、css等文件引入空白问题
    Vue 组件 data为什么是函数
    安装Node,创建vue项目,运行及打包
    JQuery移除事件
    百度地图定位
    移动端导航过多,点击导航左右滚动回弹
    移动端开发模板
    移动端左右滑动导航
    使用‘圣杯布局’、‘双飞翼布局’来解释自适应的三栏水平布局
    css实现三角箭头
  • 原文地址:https://www.cnblogs.com/dmoransky/p/14561796.html
Copyright © 2011-2022 走看看