Problem - 1630A - Codeforces
a
AC代码:
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Problem - 1630B - Codeforces
b
AC代码:
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Problem - 1630C - Codeforces
用普通数组能过,用vector过不了,很怪
AC代码:
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#include
using namespace std;
#define lowbit(x) ((x) & -(x))
#define endl 'n'
#define IOS1 ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define IOS2 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef vector vi;
typedef vector vll;
typedef vector vc;
typedef long long ll;
template T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
template T lcm(T a, T b) { return a / gcd(a, b) * b; }
template
T power(T a, int b) {
T res = 1;
for (; b; b >>= 1, a = a * a) {
if (b & 1) {
res = res * a;
}
}
return res;
}
template
inline void read(T& x)
{
x = 0; int f = 1; char ch = getchar();
while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); }
while (isdigit(ch)) { x = x * 10 + ch - '0', ch = getchar(); }
x *= f;
}
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;
const double PI = acos(-1.0);
const double eps = 1e-6;
inline int sgn(double x) {
return x < -eps ? -1 : x > eps;
}
int a[200010], pos[200010], dp[200010];
void solve() {
int n;
cin >> n;
memset(dp, 0x3f, sizeof(dp));
// vector a(200010);
// vector pos(200010);
// vector dp(200010, 0x3f);
for (int i = 1; i <= n; i++) {
cin >> a[i];
pos[a[i]] = i;
}
dp[0] = 0;
int cur = pos[a[1]];
for (int i = 1; i <= n; i++) {
dp[i] = min(dp[i - 1] + 1, dp[i]);
cur = max(cur, pos[a[i]]);
dp[cur] = min(dp[i] + 1, dp[cur]);
}
cout << n - dp[n] << endl;
return;
}
int main() {
IOS1;
//IOS2;
int __t = 1;
// cin >> __t;
for (int _t = 1; _t <= __t; _t++) {
solve();
}
return 0;
}