本帖最後由 李知易 於 2025-6-7 12:01 編輯
e289. 美麗的彩帶
- #include<bits/stdc++.h>
- using namespace std;
- string v[200005] = {};
- int main()
- {
-
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int n, m;
- cin >> n >> m;//3 2 3 2 4 5 6
- for(int i = 0; i < m; i++)
- {
- cin >> v[i];
- }
- unordered_map<string, int> t;
- int sum = 0, dis = 0;
- for(int i = 0; i < m; i++)
- {
- t[v[i]]++;
- if(t[v[i]] == 1)
- dis++;
- if(i >= n)
- {
- t[v[i-n]]--;
- if(t[v[i-n]] == 0)
- dis--;
- }
- if(dis == n)
- sum++;
- }
- cout << sum;
- return 0;
- }
複製代碼- #include<bits/stdc++.h>
- using namespace std;
- string num[200005] = {};
- int main() {
- cin.tie(0);
- ios_base::sync_with_stdio(0);
- unordered_map<string, int> mp;
- int m, n;
- cin >> m >> n;// 1 2 3 5 4 5 4
- for(int i = 0; i < n; i++)
- cin >> num[i];
- int dis = 0, res = 0;
- for(int i = 0; i < m; i++)
- {
- if(mp[num[i]] == 0)
- dis++;
- mp[num[i]]++;
- }
- res += (dis == m);// if(dis == m) res++;
- for(int l = 0, r = m; r < n; l++, r++)//滑塊向右移動
- {
- mp[num[l]]--;
- if(mp[num[l]] == 0)
- dis--;
- if(mp[num[r]] == 0)
- dis++;
- mp[num[r]]++;
- res += (dis == m);
- }
- cout << res << endl;
- return 0;
- }
複製代碼 |