专栏文章
题解:P1076 [NOIP2012 普及组] 寻宝
P1076题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqkild3
- 此快照首次捕获于
- 2025/12/04 06:17 3 个月前
- 此快照最后确认于
- 2025/12/04 06:17 3 个月前
题意
告诉你每层的房间数,依靠指示牌的数字找到上一层的房间即可
思路
只要一层一层的模拟每个房间即可,我们从 号屋爬到的一定是下一层的 号屋。我们用变量 来存储位置。
但是暴力肯定会超时,因为数据很大,所以我们发现了周期,用找的次数模楼层门数即可,但是如果号码为该层楼梯门个数,也就是余数为零,为保证正确性,加一再模即可,建议使用 scanf 呦,超时了别怪我
代码
CPP#include <bits/stdc++.h>
using namespace std;
const int size=20123;
long long al = 0;
int k;
int s[10001][101], a[10001][101];
int n, m;
int main() {
cin >> n >> m;
int sum = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d%d", &s[i][j], &a[i][j]);
if (s[i][j] == 1) {
sum++;
}
}
}
cin >> k;
for (int i = 1; i <= n; i++) {
int x = a[i][k];
al = (al + x) % size;
int t = 0;
for (int j = 0; j < m; j++) {
t += s[i][j];
}
x %= t;
if (x == 0) {
x = t;
}
if (s[i][k]) {
x--;
}
while (x) {
k = (k + 1) % m;
if (s[i][k]) {
x--;
}
}
}
cout << al % size;
return 0;
}
如有任何问题请在评论区@我,管理大大求过!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...