Preface
前情提要:去年圈钱杯国赛游记,本来还想着今年报JAVA/PY的,结果语法一个学不懂还是去CPP组开卷了
省赛很简单但因为最后一题看漏条件了还是遗憾离场,但也给了我一种今年篮球杯水的一批的刻板印象
然后国赛被一堆数学题直接创飞了,但好在前面几个题还能胡几个做法出来,但FWT和神秘筛子是写不了一点
不过好消息是今年出分挺快的,昨天打的比赛今晚就能出分了,最后CA组Rank4也算是个比较不错的成绩了吧,至少去年一年的努力勉强能看出点成果(虽然我感觉平时比赛都是在抱队友大腿)
说回比赛,由于电专离考点贼远,不得不6点50起床去赶地铁,头天晚上还2点多才睡,鉴定为要猝死了
经过经典出租车——地铁——共享单车一条龙冲刺后,勉强在开始前赶到考场
找到座位后发现周围一圈都是电专22级的,后面有俊哥前面有cai神和雷大爷
比赛开始时还经典出锅环节,电脑死活连不上网,重启了也没用还非得关机在开机,等我折腾完看到题面时10min都过去了
During Contest
可能是由于没太睡醒吧,困得要死反而对延迟超高的键盘和卡的一笔的电脑没啥感觉了,看到第一题先慢悠悠调个日历出来翻了个答案出来
第二个填空也是老套路了,随便化一下式子就变成一个约数分解的问题,写完一跑输出一个看起来很大的数
但因为它没有给我报个负数出来,当时也脑抽了没注意可能会爆 long long
,直接复制提交完事
(沟槽的当时省赛都能看出\(A(10^6,4)\)会爆long long
,结果国赛连个这么明显的东西都没看出来,经典开局不在状态了属于是)
后面的两个10分题都比较显然,C手玩一下就是先给相邻的面对面走的算出答案,剩下的拿个并查集随便维护一下就行了
D的话刚开始还有点没思路,后面发现由于目标状态已经给定了直接倒着BFS一遍算出到每个状态的最短路就完事了
大力写了个map
套vector
没太管常数,虽然本机跑的很慢但感觉这题的时空限制就是为了可以直接STL乱搞准备的,就没去写康托展开了
E的话把式子移个项后发现直接离散化后拿树状数组维护下就好了,写完还拍了一波感觉还是挺稳的
F感觉是个老朋友了,和\(n\)相关的做法应该是要用莫反,但这题\(x,y\)的值都不大直接对\(x,y\)分解质因数后容斥算一下贡献应该也能跑
写完调了下样例过了就没管了,感觉这场counting的样例都给的挺强的
G题一眼矩阵快速幂优化DP,大致就是设状态\(f_{i,j,0/1/2}\)表示构造了长度为\(i\)的串,当前匹配了模板串的前\(j\)位,一共匹配成功了\(0/1/2\)次的方案数
转移的话就是枚举\(3\times |S|\)种状态然后枚举所有字符的填法,要找转移后的状态的话需要用KMP求next
数组
但众所周知我不会string,尝试默写KMP失败后想起这个模板串长度才\(30\),直接大力枚举把next
数组求出来就完事
这题样例也是十分之强啊,过了大样例后就扔了没管了,一看时间只剩90min了感觉还有3个题还是比较紧张的
中间溜出去上了个厕所,然后要了张草稿纸后开始转战H这个博弈,由于平时博弈基本都扔给祁神想的说实话内心还是有点虚
不过大致手玩了一会后感觉最后的流程一定是先在前\(R\)轮先手放两个,然后后手拿一个;然后后面的轮次后手每次都至少拿走两个,对答案就没有影响了
想到这点后就很容易想到二分\(R\)的值了,检验的话就是看能否在棋盘上选\(R+1\)个点,使得它们两两都不被\(R\times R\)的矩形所覆盖,这个点数显然就是\(\lceil\frac{n}{R}\rceil^2\)
然后点开I一看本来以为终于有树上问题可以发挥下强项了,结果仔细一看怎么又是神秘数学题
\(10^9\)的数据一看就要找关键性质,但这种东西我一般都找不到,所以打算先去写个\(10^6\)的部分分
由于这棵树形状的特殊性,深度其实非常非常小,因此算树上路径不用写点分治复杂度也是对的
但后面合并子树的时候出了个致命问题,由于最后要求路径贡献的乘积(而不是和),导致诸如按位拆贡献、0/1Trie等处理方式完全派不上用场
后面感觉只能强行统计出每种异或值出现的次数最后统一算答案,但这样的话合并就要写FWT了,好家伙没有板子只能经典等死了,想了半天最后\(O(n^2)\)跑路
J题一看题面就梦回去年省赛最后一题,拉下去一看这个数据范围简直吓死人,\(1.5\times 10^{16}\)是否有点太强劲了
由于此时时间剩余不多了,而且感觉就算会用莫反化式子也写不出杜教筛,索性直接去写\(O(n)\)的部分分了
这档的话只需要枚举\(i\in[1,n]\),然后将\(i\)分解质因数后,设其所有指数为奇数的质因数乘积为\(M\)
不难发现如果\(i\times j\)是完全平方数的话,则\(j\)一定是\(M\)的倍数,那么\(j\)剩下的部分就是开一个根号就能统计的了
由于担心直接枚举\(i\)然后分解质因数常数有点大,后面去写了直接先筛出质因数后然后DFS构造出\(i\)的做法,中间还犯了一堆神秘错误最后勉强写完
写对拍捏了几组数据后感觉正确性是没问题了,想本机测一下极限数据的速度来着,结果发现一直RE运行不了
后面意识到应该是本地爆栈了,但我又忘了DEV怎么调栈大小的了,索性不测了直接开摆听天由命
最后检查了下提交的东西后比赛就结束了,感觉好像啥难题也没写都水了一场比赛
Postscript
赛后本来想和23级学弟拼车回清水河的,不过由于先看到了融融和小武一行人就不要脸地和他们一起恰饭去了
最后爽炫老成都风味川菜,口味确实很赞吃的很爽,酒足饭饱后也是直接打车回学校,一到寝室就直接洗澡睡觉一条龙,一觉睡到晚上7点可海星
虽然今年打的还算可以,但感觉可能也就是挂的分比较少吧,大体是吸取了之前几次线下赛屡犯唐氏问题的缘故吧
总而言之关于篮球杯的心结也算是解开了,明年应该打死我都不会再来打了(flag
标签:10,质因数,后面,C++,蓝桥,枚举,感觉,直接,赛国赛 From: https://www.cnblogs.com/cjjsb/p/18227762