Codeforces Round Pi Div2

困死我了

人生中第一场Codeforces准备有点不充分呢表情
A. Lineland Mail

水题乱搞

B. Berland National Library

维护nexpected,表示已知在馆内的人数;每次有一个未预料到的人走出来,就代表之前得到的ans都要加一。

C. Geometric Progression

一个STL map从前往后从后往前分别扫一遍,以i为中间那个数记下前后a[i]/k和a[i]*k的数量,然后相乘加起来。注意要用高精度。顺便吐槽一下网上和BSOJ上的高精度模板没一个能打的(浪费了我半个小时+3次无效提交),搞得我最后用Python重写了一遍。

D. One-Dimensional Battle Ships

用一个STL set记录开炮位置,维护当前最大可以放的船数,小于总船数立即输出。

具体一点就是如果打了x,x前面是prev(x),后面是next(x),那么可放最大船数的变化量

新的 – 旧的

= (x-prev(x))/(ship_len+1) + (next(x)-x)/(ship_len+1) – (next(x)-prev(x))/(ship_len+1)

为什么是这样呢,因为船不能相碰(我被坑了!)所以把船长视为原有的+1,把可用的格数也视为原有的+1。

E. President and Roads

从家(要用反向边)和首都分别求一次SSSP,如果一条边直接就在首都到家的最短路上就是YES;如果一条边的权值>1而且1+家到边的尾部最短距离+首都到边的头部最短距离<当前最短路就是CAN,最小修缮也很容易推;否则就是NO

F. Mausoleum

暂时没有思路

留下评论