算法知识点: 枚举,模拟
复杂度:
解题思路:
模拟从第 层走到第
层的整个过程,每次找出从当前房间开始第
个有梯子的房间即可。
最终每层遇到的 之和就是答案,不要忘记将答案对
取模。
C++ 代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int N = 10010,
M = 110,
mod = 20123;
int n, m, k;
bool st[N][M];
int x[N][M];
int main()
{
scanf("%d%d", &n, &m);
int res = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
scanf("%d%d", &st[i][j], &x[i][j]);
scanf("%d", &k);
for (int i = 0; i < n; i++)
{
int s = 0;
for (int j = 0; j < m; j++) s += st[i][j];
int t = x[i][k];
res = (res + t) % mod;
t %= s;
if (!t) t = s;
for (int j = k;; j = (j + 1) % m)
{
if (st[i][j])
{
if (--t == 0)
{
k = j;
break;
}
}
}
}
printf("%d\n", res);
return 0;
} 
京公网安备 11010502036488号