2018-2019 ACM-ICPC, Asia Shenyang Regional Contest
先开坑,因为做了下 K 题。
J - How Much Memory Your Code Is Using?
题意
给出各种数据大小和变量或数组,求总内存,单位KB。
思路
签到题,直接模拟。
点击显/隐代码
K - Let the Flames Begin
题意
以约瑟夫环为背景,有 n 个人站成一圈,数 k 个人后出局,接着下一个人开始继续进行,如此反复,求第 m 个出局的人的编号。
数据范围:1⩽n,m,k⩽1018,n⩾m,保证 min(m,k)⩽2×106。
思路
关于约瑟夫环线性算法及其优化算法,见 Blog - 约瑟夫环问题 。
那么区别在于题目要求第 m 个出局的人的编号,其实这并不难解决, 设 f(n,m,k) 表示题目所要求的解。
则有
f(n,1,k)f(n,m,k)=(k−1)modn=(f(n−1,m−1,k)+k)modn
于是只需要将递推的初始值改为 (k−1)modn 即可,其他可以直接套用 优化算法,时间复杂度为 O(min(m,klogm))。
点击显/隐代码