求助(违规紫衫
  • 板块灌水区
  • 楼主20230902wkr
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/12/1 16:23
  • 上次更新2024/12/1 19:29:06
查看原帖
求助(违规紫衫
1079275
20230902wkr楼主2024/12/1 16:23

https://www.luogu.com.cn/problem/P1076 这道题我们老师教了,但没听懂,求大佬解释代码

#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;
}
2024/12/1 16:23
加载中...