题目链接: Lose it!
大致题意:
[4,8,15,16,23,42]或者空序列是一个好的序列,,给出一个序列,可以删除任一元素,问最少进行多少次可以将原序列变成一个好的序列
解题思路:
找出[4,8,15,16,23,42]序列有多少个,最后n-count*6就是答案
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5 + 10;
int n;
int a[N];
int cnt[7];
int main() {
cin >> n;
for (int i = 1; i <= n; ++i)cin >> a[i];
int count = 0;
for (int i = 1; i <= n; ++i) {
if (a[i] == 4)cnt[1]++;
if (a[i] == 8 && cnt[1] > cnt[2])cnt[2]++;
if (a[i] == 15 && cnt[2] > cnt[3])cnt[3]++;
if (a[i] == 16 && cnt[3] > cnt[4])cnt[4]++;
if (a[i] == 23 && cnt[4] > cnt[5])cnt[5]++;
if (a[i] == 42 && cnt[5] > cnt[6])cnt[6]++;
if (cnt[1] && cnt[2] && cnt[3] && cnt[4] && cnt[5] && cnt[6]) {
for (int i = 1; i <= 6; ++i)cnt[i]--;
count++;
}
}
cout << n - count * 6 << endl;
return 0;
}