A. Vanya and Cubes
题目大意:
给你n(n <= 1e4)个立方体,问你能建的最高的金字塔的高度是多少。金字塔顶层需要1个立方体,往下第i层需要个立方体。
题解:
模拟。由于n <= 1e4,层数也不会超过1e4。所以就一层一层加到不能加位置。
B. Vanya and Lanterns
题目大意:
坐标范围为[0,l]的线段上有n个点,每个点可以覆盖坐标差的绝对值不大于d的位置,求确定最小的d使得这n个点可以覆盖整条线段。
题解:
贪心。将点按坐标排序,最左边的点覆盖0,最右边的点覆盖l。相邻两点间的部分由这两个点各覆盖一半。将这些覆盖范围取max即为答案。
C. Vanya and Exams
题目大意:
有n门考试,每门考试最高分不超过r,现在知道第i门考试得到了ai分,要提高这门考试1分需要写bi篇文章,问最少写多少篇文章才能使总平均分大于等于avg。
题解:
贪心。将考试按提高分数需要写的文章数从小到大排序。按照这个顺序提升分数直到分数够了或者这门考试已经达到r分为止。
D. Vanya and Computer Game
题目大意:
有n(n <= 1e5)只怪物,第i只怪物需要被攻击ai(ai <= 1e9)下才能被消灭。Vanya每秒钟攻击x(x <= 1e6)下,Vova每秒钟攻击y(y <= 1e6)下。问每只怪物被谁攻击的最后一下。如果同时攻击输出Both。
题解:
模拟。直接模拟每只怪物每次是谁攻击的肯定不行。观察到x <= 1e6, y <=1e6。每秒钟两个人一起造成的伤害是固定的x + y。所以可以先将ai mod (x + y)再模拟每次攻击。由于有n只怪物。所以可以将血量为0~x + y – 1的结果都先预处理出来,最后输出答案即可。
E. Vanya and Field
题目大意:
n*n(n <= 1e6)的网格中有m(m <= 1e5)棵苹果树,Vanya从一个格子出发(x0, y0),每次移动的向量均为(dx, dy),即如果Vanya现在在(x, y),移动后的格子为((x + dx) % n, (y + dy) % n)。问从哪个格子出发可以预见最多的苹果树。其中gcd(n, dx) = gcd(n, dy) = 1
题解:
数学题,由gcd(n, dx) =gcd(n, dy) = 1,我们知i遍历0 ~ n – 1时,i * dx mod n也遍历0 ~ n – 1。所以从(0, 0), (0, 1)…(0, n - 1)出发将得到n条两两不相交的路线。并且每条路线的长度为n。即将网格分成了n个”等价类”。对于每棵苹果树,我们给它属于的路线答案加1,最后找到答案最大的路线即可。
我们用d[x] = y来记录从(0, 0)出发的过程中横坐标到x的时候纵坐标为y。则第i棵苹果树属于第(yi – d[xi] + n) % n条路线。