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;
}