roadstar 编程题目
第一题:
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <algorithm> #include <unordered_set> #include <cmath> #include <map> using namespace std; int main() { map<string, int> dict; string s; int n; scanf("%d", &n); for (int i = 0; i < n; i ++) { cin >> s; if (dict.find(s) == dict.end()){ dict[s] = 0; cout << "OK" << endl; }else{ dict[s] += 1; cout << s + to_string(dict[s]) << endl; } } return 0; }
第二题
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <algorithm> #include <unordered_set> #include <cmath> #include <map> #include <set> using namespace std; int main() { int n, x; vector<int> data, vis; set<int> s; scanf("%d", &n); for (int i = 0; i < n; i ++) { scanf("%d", &x); data.push_back(x); s.insert(i+1); vis.push_back(0); } for (int i = 0; i < n; i ++) { if(s.find(data[i]) != s.end()){ vis[i] = 1; s.erase(data[i]); }else{ vis[i] = 0; } } for (int i = 0; i < n; i ++) { if(vis[i] == 0) { // cout << i << " "; data[i] = *s.begin(); s.erase(*s.begin()); } } // cout << endl; for (int i = 0; i < n; i ++) { cout << data[i] << " "; } cout << endl; return 0; }
第三题
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <algorithm> #include <unordered_set> #include <cmath> #include <map> #include <set> #include <climits> using namespace std; int binary(vector<long long>& data, int key) { int l = 0; int r = data.size(); while(l+1 < r) { int mid = (l+r)/2; if (data[mid] <= key) { l = mid; }else{ r = mid; } } return l; } int main() { long long n, k, x; vector<long long> data; scanf("%lld%lld", &n, &k); for (int i = 0; i < n; i ++) { scanf("%lld", &x); data.push_back(x); } int p = binary(data, 0); // cout << p << endl; long long ans = LLONG_MAX; for (long long i = p-k > 0 ? p-k : 0; i+k-1 <= n-1; i ++) { long long temp = 0; long long start = data[i]; long long end = data[i+k-1]; // cout << start << " " << end << endl; if(end < 0) { temp = (0-start); }else if (start < 0 && end > 0){ temp = min((0-start)*2 + end, 2*end + (0-start)); }else if (start > 0) { temp = end; } // cout << temp << endl; if (temp < ans) { ans = temp; } } cout << ans << endl; return 0; }
#笔试题目##面经##Roadstar#