2017.1.13【初中部 GDKOI】模拟赛B组

今天比赛有点不在状态,所以成功地垫底了。

T1:比赛时怎么想都想不出来,知道正解后才发现如此简单。。。

我们知道,想删掉朝向向左的花,最优一定是从右往左删这些花,同理,想删掉朝向向右的花,最优一定是从左往右删这些花。然后我们可以计算一下先删左和先删右的值,最后选出最小。

比赛时想得太复杂了,下次要注意做题时不要急着想算法,要先想题目一些隐藏的性质。


T2:比赛时已经想对了,就差一个优化了。

用dfs从(1,1)开始找,优先选值小的数,如果路径合法就结束,否则继续往下搜。优化就是加一个标记数组,走过的地方就不要走了。


T3:这题的方法很巧妙。

我们先不要管最大能量,我们知道只要算出最终能剩多少个能源,就可以算出最大能量了(选最高的那几个)。

关键是怎样算出最终剩能源的个数,这时我们可以用栈。

我们知道,A操作不会损失能源,而B操作会损失一遍较小的能源。

我们把输入的字符串倒着搜一遍,然后:

1、每遇到一个“X”,就把它入栈

2、每遇到一个“A”,就把它下面两个位置的“X”的个数加起来,同时把它入栈,把它下面的两个位置删掉。

3、每遇到一个“B”,就选择他下面两个位置中“X”的个数多的一个,同时把它入栈,把它下面的两个位置删掉。

最终栈里只会剩下一个元素,而这个就是最终剩余能量的个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值