NC50320. 收集雪花
描述
输入描述
第一行一个正整数n;
第2行n个非负整数表示n个时刻雪花的形状。
输出描述
最多能收集雪花的数量。
示例1
输入:
5 1 2 3 2 1
输出:
3
C++14(g++5.4) 解法, 执行用时: 516ms, 内存消耗: 4456K, 提交时间: 2019-12-08 20:03:15
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); int n; cin >> n; vector<int> A(n); for (auto &a: A) cin >> a; int best = 0; set<int> S; for (int l = 0, r = 0; l < n; l++) { while (r < n && !S.count(A[r])) S.insert(A[r++]); // for (auto t: S) cout << t << " "; cout << endl; best = max(best, r - l); S.erase(A[l]); } cout << best << endl; }
C++ 解法, 执行用时: 277ms, 内存消耗: 4472K, 提交时间: 2022-02-03 09:40:27
#include<bits/stdc++.h> using namespace std; const int mod = 999983; int f[mod],a[1000001]; int main(){ int n,t = 0,ans = 0,i; cin>>n; for (i = 1;i <= n;i++) cin>>a[i]; for (i = 1;i <= n;i++){ t = max(t,f[a[i] % mod]); ans = max(ans,i - t); f[a[i] % mod] = i; } cout<<ans; return 0; }