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 比赛尽量参加练手感。

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

  • 相关阅读:
    How to create jar for Android Library Project
    Very large tabs in eclipse panes on Ubuntu
    64bit Ubuntu, Android AAPT, R.java
    Linux(Ubuntu)下如何安装JDK
    Configure xterm Fonts and Colors for Your Eyeball
    建立、配置和使用Activity——启动其他Activity并返回结果
    建立、配置和使用Activity——使用Bundle在Activity之间交换数据
    建立、配置和使用Activity——启动、关闭Activity
    建立、配置和使用Activity——Activity
    异步任务(AsyncTask)
  • 原文地址:https://www.cnblogs.com/dmoransky/p/14561796.html
Copyright © 2011-2022 走看看