专栏文章

题解:P13821 「Diligent-OI R2 A」蒹葭苍苍

P13821题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mio66g00
此快照首次捕获于
2025/12/02 14:00
3 个月前
此快照最后确认于
2025/12/02 14:00
3 个月前
查看原文
蒟蒻不会一维做法,所以开了一个二维数组

思路

因为只能向上、下或右方向,所以不可以往左回头,如果你决定往右走,就必须保证可以直接往下走到终点。
map
先用一个bool类型的二维数组将整个地图存起来(1表示可以走,0表示障碍物),然后判断当前格子下面这一整列有木有障碍物(最后一行除外,因为最后一行没有下面了)。如果没有就可以走(ans++),否则会被堵住,不可以往这格走。
完结撒花🌸
(嘻嘻骗你的:)这时候我们还没有到终点呢,前面只走到了第n-1行,所以要加上第n行的格数,这样才对✅
不懂看注释吧

贴上代码

CPP
#include <bits/stdc++.h>
#define int long long

using namespace std;

bool a[105][105];
int b[105];

signed main() {
    int n;
    cin >> n;

	int x;
	for(int i = 1;i <= n;i++)
	{
		cin >> x;
		b[i] = x;
		for(int j = 1;j <= x;j++)
		{
			a[i][j] = 1;//标记可以走
		}
	}
	int ans = 0;//计数器
	for(int i = 1;i < n;i++)
	{
		for(int j = 1;j <= b[i];j++)
		{
			bool s = 1;
			for(int z = i + 1;z <= n;z++)
			{
				if(!a[z][j])//a[z][j]为false
				{
					s = 0;//不可以走
					break;
				}
			}
			if(s)
			{
				ans++;
			}
		}
	}
	
	cout << ans + b[n] << '\n';//务必加上最后一行

    return 0;
}
    
(蒟蒻第一次写题解,求管理员大大通过!)
如果有可以改进的地方,可以在评论区指出

都看到这了,点个赞再走呗~

评论

0 条评论,欢迎与作者交流。

正在加载评论...