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#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务