洛谷 题解 P1684 考验

本蒟蒻又来发题解啦!

这个题的正解应该是贪心

直接找题目的关键:

韵脚只可能是 “AABB”, “ABAB”, “ABBA” 和“AAAA”中的一种

我们来观察韵脚,是不是都是2个'A'和2个'B';

'AAAA'可以看作'A'与'B'相同

那么现在不就是个简单的贪心了吗?

如果有两个出现2个相同的数字就ans++

上代码:

#include<bits/stdc++.h>//万能头 
using namespace std;

#define maxn 10010
int n, m, k, a[maxn], f[maxn], c[maxn], x, ans, flag;

int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; ++ i)
{
scanf("%d", &x);//输入 
a[i] = c[i] = x;
}
sort(c + 1, c + n + 1);
m = unique(c + 1, c + n + 1) - c;//去重 
for(int i = 1; i <= n; ++ i)
{
k = lower_bound(c + 1, c + m + 1, a[i]) - c;
a[i] = k;
}
for(int i = 1; i <= n; ++ i)//求解 
{
++ f[a[i]];
if(f[a[i]] == 2) 
{
++ flag;
f[a[i]] = 0;
}
if(flag < 2)
continue; 
flag = 0;
++ ans;
memset(f, 0, sizeof(f));
}
printf("%d", ans);
return 0;
}

猜你喜欢

转载自www.cnblogs.com/Flash-plus/p/12028335.html
今日推荐