牛客寒假算法基础集训营6 I wzoi 括号匹配

本文解析了一场编程比赛中的策略性做题得分问题。通过分析题目描述,发现选手不会选择0收益的题目,只会选择10分或5分的题目。文章详细解释了如何使用栈来匹配相同题目的策略,以实现最大得分,并提供了AC代码实现。

题解

连着两场中文题目看错。。题意说做题的时候如果和当天推荐一样则得到题目分数-5的分数 不是扣5分
考虑如果他不是傻纸则不会出现0收益的题目。因为不会看题的时候按照推荐相反的看,然后做的时候也按照推荐相反的做
所以只会出现10分或者5分的情况,10分的情况就是两个相同的进行配对,类似于括号匹配用栈实现,把相同的能匹配的匹配完
剩下的数量因为要看一个再写一个所以/2*5就是得分相加即可

AC代码

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int MAXN = 1e6 + 10;
char s[MAXN];

int main()
{
#ifdef LOCAL
	//freopen("C:/input.txt", "r", stdin);
#endif
	scanf("%s", s);
	stack<char> stk;
	int ans = 0;
	for (int i = 0; s[i]; i++)
		if (!stk.empty() && stk.top() == s[i])
			stk.pop(), ans += 10; //如果两个相同的能配对就配对
		else
			stk.push(s[i]);
	ans += stk.size() / 2 * 5; //剩下的没配对则一个看一个写两个得5分 不会出现0分的情况
	cout << ans << endl;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值