Day 3
吸取昨天的教训,今天早早地起床了!Qw 到了宾馆餐厅吃了一碗超辣的面!(湖南人都这么能吃辣的蛮)拄着拐杖早早到了机房(今天似乎走的快了一点?怕不是心理作用==)
7:40到达机房,似乎来得过于早,天泽龟罕见的来得比咱晚。掏出U盘装上常用软件结果VSCode的包莫名其妙的爆炸了?只好掏出PanDownload下一个咯==
瞟一眼题目:
T1 取球问题
和Day 2 T1同样是数论题,相同的板子难度==话说这三天一天一道数论题啊==
本题要求求出从1 \sim n编号的球中取出m最小的编号为k的球的取法总数。显然,取编号为k的球,再取m-1个编号大于k的球即可,明显为组合数问题。答案为C^{m-1}_{n-k}。注意到数据规模小于10^{6},直接暴力求解即可。题目要求对10^{9}+7取模,此处用到乘法逆元,O(n)预处理即可。
T2 修理机器人
T3 下标
这题似乎可以看做是一道语言基础题?
在C/C++语言中,下标操作实际上是一颗语法糖。数组名称是指向内存中该数组中第一个元素的指针,而下标操作则是将这个指针加上一个偏移量后解引用,即
a[n]=^{*}(a+n)
那么,此时将a与n进行互换后实际是不影响语意的。那么,我们即可对数组标识符和偏移量进行等价互换。对于每一组数据,我们可以将形如a[n]的式子看为由a和n两部分组成。题目要求求字典序最小的等价串,我们每次将a和n中字典序较小的那个放到前面去即可。此处的n也可能是个串,同等处理即可。时间复杂度为O(n)。
然后就爆炸了== 在此处,为了简化操作,咱使用了C++标准库中的std::string
进行计算。众所周知,std::string
的复制、连接、比较等操作跑的比较慢,常数极大。对于这几个操作尽可能避免和优化便能过通过本题(我会说我被最后两个点卡了一个下午么)
晚上与天泽龟、教练、母上大人共进晚餐,拄拐游玩湘江(?),度过了3天来难得轻松愉快的夜晚(这就是你咕咕咕博客的原因?)。