nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
这几天训练的太频繁了,一天一场比赛,简直不要太👹.从四月25号到5月3号9天开了7场.
扫雷,给你一个n*m的矩阵,没有炸弹的地方会有数字,其值为周围的炸弹的个数.
给你两个矩阵,第一个为A,第二个为B,你需要对矩阵A做一些改变,修改最多一半的格子(即把炸弹变成没有炸弹或者把没有炸弹变成有炸弹),使得矩阵A修改后,没有炸弹的格子的数值之和与矩阵B相等.
他们中没有炸弹的格子的数值之和是相等的,证明过程也很简单.
然后我们考虑把A变为其中一个,显然如果变为\(B\)需要修改超过一半的格子,则变为\(B_2\)需要修改的格子数量少于一半.
考虑到\(\log_2(x)\)只和x的二进制最高位的1的位置有关,另外由于\(i\)和\(j\)的与为0,所以现在变成了只与ij中最高的二进制位的位置有关,所以可以直接数位dp,考虑dp(ulimitxlimity)代表考虑第u位,以及此时xy是否有限制,其值为方案的计数,
然后进行第二次dp,枚举最高位1的位置,然后使用前一次dp的值乘以最高位1的位置来计算答案.
res++;
有两个人在x轴上,第一个人在位置\(p_1\)他可以以速度\(v_1\)行走,第二个人在位置\(p_2\),可以以速度\(v_2\)行走,他们可以向左或者向右,任何时刻都可以调头,问最少经过多久,使得区间[0n]中任意一个点都被至少一个人走过.
考虑每个人向左或者向右,一共四个情况,
两人都向左,到达0后向右,
两人都向右,到达n后向左,
左边人向右,右边人向左.
错误原因: 左边人向右走一点点,然后掉头向左直到0,右边人向右走到n,然后向左走.
二分答案,同时考虑0和n位置被哪个人碰到了,一共四个情况,先拿0来说,假设左边的人在时间t以内到了0,那么他应该尽量贪心的往右边蹭蹭.这里有两个策略:
先向右蹭一点点,然后转向,在时刻t前到达位置0.
圆桌上有n个餐位,从1到n顺时针编号,其中有k个餐位上有盘子,圆桌外围n个椅子,k个人坐在椅子上,告诉你盘子的位置,人的位置,你可以顺时针或逆时针转动圆桌,每次转动会让盘子顺时针或逆时针移动一个单位,当一个盘子转到一个人的前,这个人可以选择把盘子拿下来,问你最少转动多少次,使得每个人都能拿到盘子.
有n个同心圆.圆的半径分别是1到n,有m条直线,经过圆心,每个圆都被分割成m等分.这个过程中形成了一些交点,定义一个点到另一个点到距离为在同心圆或在直线上行走所需要的最短距离,你需要计算交点中点任意两点的距离之和.
一层一层考虑,从内层到外层进行dp,每次新增的值等于外层点到内层所有其他点到距离之和,另一方面,两个点之间到距离,可以证明要么只走直线,要么只走圆弧.
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议.转载请注明出处!