【日常训练赛】B - Gregor and the Pawn Game

题目链接

Problem - 1549B - Codeforces

题意

一个n*n的棋盘,第n行(最下面)是己方的棋子,第1行(最上面)是敌方的棋子。gregor在一轮中只移动自己的棋子。如果没有棋子挡着的话,就可以直接向正上方走。而棋子向左上和右上行走是当且仅当他正方有棋子的时候。同时己方棋子到达的位置上的敌方棋子也会被移除。要求求出可可以到达第一行的最大的棋子数。

思路

不难。首先的话中间大片的空白是不需要考虑的,直接直走的就好了。扫描到己方棋子的时候,如果其正上方没有棋子的话,直接直走就好。如果有的话, 观察左上方和右上方是否有棋子。

需要注意的问题:1.越界问题 2.更新敌方棋子的状态(1->0)

代码

#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define Endl "\n"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 1e5+5;
const int INF = 0x3f3f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值