点击跳转例题,贪心知识点讲解
我们参考贪心算法,在访问服务器的时候,我们选择一个“代理服务器”使得能访问的服务器的数量最多。这个贪心思路有没有问题呢?没有,因为这个决策不会影响到后面的选择,而且使得结果最优(取得最小值)。#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128 using namespace std; const int N = 2e5 + 10, M = 1e3 + 10, mod = 998244353, INF = 0x3f3f3f3f; int a[N], b[N], c[N], pre[N]; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; cin >> n; //给每个代理服务器一个顺序(下标) map<string, int>mp; for (int i = 1; i <= n; i++) { string s; cin >> s; mp[s] = i; } int m; cin >> m; int ans = 0; set<int>st; for (int i = 1; i <= m; i++) { string s; cin >> s; if (mp[s]) { st.insert(mp[s]); } //判断是否所有的代理服务器都存在 if (st.size() == n) { if (n == 1) { cout << -1 << endl; return 0; } //清空st,把当前代理服务器加入,符合题意的转换。 st.clear(); st.insert(mp[s]); ans++; } } cout << ans << endl; return 0; }
KY4 代理服务器(计算机考研复试上机题)
最新推荐文章于 2024-11-08 16:13:33 发布