社区讨论

求助(违规紫衫

灌水区参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m45c4wdp
此快照首次捕获于
2024/12/01 16:24
去年
此快照最后确认于
2025/11/04 13:30
4 个月前
查看原帖
https://www.luogu.com.cn/problem/P1076 这道题我们老师教了,但没听懂,求大佬解释代码
CPP
#include<bits/stdc++.h>//思路:模拟从第 1 层走到第 n+1 层的整个过程,每次找出从当前房间开始第 x个有梯子的房间即可
using namespace std;
int n, m, k,ans;
int b[10010][110],x[10010][110];
int main() {
	cin>>n>>m;
	for (int i = 0; i < n; i ++ )
		for (int j = 0; j < m; j ++ )
			cin>>b[i][j]>>x[i][j];
			//纯纯输入二维数组
	cin>>k;;
	for (int i = 0; i < n; i ++ ) {
		int sum = 0;//这层楼共几个楼梯
		for (int j = 0; j < m; j ++ )
			sum += b[i][j];
		int t = x[i][k];
		ans = (ans + t) % 20123;//取模
		t %= sum;
		if(!t)
			t=sum;
		for (int j=k;;j=(j+1)%m) {
			if (b[i][j]) {
				if (--t == 0) {
					k = j;//存储上一层的第几个房间编号
					break;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...