求调 WA subtask #4 部分测试点
查看原帖
求调 WA subtask #4 部分测试点
453555
qW__Wp楼主2025/1/16 10:57

评测记录:https://www.luogu.com.cn/record/198472181

思路是先映射到楼道1,然后计算出最大的 pp 满足 pkaipk \le a_i,答案计算分为两部分:1p1 \sim pp+1aip + 1 \sim a_i,其中第一部分为若干循环节为 kk 的循环,第二部分没有 kk 的倍数。

Code:

#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main() {
	int n, k, x, y; cin >> n >> k >> x >> y;
	int a = n / k; int b = n - a;
	int sum = a * x + b * y; // 一个楼道的房间数 
	int r = x + (k - 1) * y; // 1 ~ k层的房间数 
	int q; cin >> q;
	while (q --) {
		int z; cin >> z;
		z = (z - 1) % sum + 1; // 映射到楼道1 
		cout << z / r * k + (z - z / r * r + y - 1) / y << endl;
	}
	return 0;
}
2025/1/16 10:57
加载中...