标签:strong clu ati while tin c++ 贪心 std amp
思路:
贪心,构造,模拟。
实现:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int t[200005], a[200005], vis[200005], n; 4 int main() 5 { 6 while (cin >> n) 7 { 8 memset(t, 0, sizeof t); memset(vis, 0, sizeof vis); 9 int cnt = 0; 10 for (int i = 0; i < n; i++) 11 { 12 cin >> a[i]; t[a[i]]++; 13 if (t[a[i]] > 1) cnt++; 14 } 15 cout << cnt << endl; 16 queue<int> q; 17 for (int i = 1; i <= n; i++) if (!t[i]) q.push(i); 18 for (int i = 0; i < n; i++) 19 { 20 if (!t[a[i]]) continue; 21 else if (t[a[i]] == 1 && !vis[a[i]]) 22 { 23 cout << a[i] << " "; t[a[i]]--; 24 } 25 else 26 { 27 if (vis[a[i]]) 28 { 29 cout << q.front() << " "; q.pop(); 30 } 31 else if (q.front() < a[i]) 32 { 33 cout << q.front() << " "; q.pop(); 34 } 35 else 36 { 37 cout << a[i] << " "; vis[a[i]] = 1; 38 } 39 t[a[i]]--; 40 } 41 } 42 cout << endl; 43 } 44 return 0; 45 }
标签:strong clu ati while tin c++ 贪心 std amp
原文地址:http://www.cnblogs.com/wangyiming/p/7631703.html