1-最小差值
15ms
#include<bits/stdc++.h>
using namespace std;
priority_queue<int> q;
int main()
{
int n;
int ans = 10010, t;
cin >> n;
while(n --){
int x; cin >> x;
q.push(x);
}
int a, b;
while(!q.empty()){
a = q.top(); q.pop();
if(!q.empty())
b = q.top();
else break;
t = abs(a - b);
if(t < ans) ans = t;
}
cout << ans;
return 0;
}
2-游戏
31ms
#include<bits/stdc++.h>
using namespace std;
map<int, bool> game;
int k;
bool judge(int x)
{
int y = x % 10;
return (x % k == 0 || y == k);
}
int main()
{
int n;
cin >> n >> k;
for(int i = 1;i <= n;i ++) game[i] = true;
int cnt = 0;
int i = 1, j = 1; //i号小朋友报数j
while(cnt != n - 1){
if(!game[i]){
// 该小孩淘汰,找到顺时针的第一个合法小孩
while(i <= n && !game[i]) i ++;
if(i > n) i = 1;
while(i <= n && !game[i]) i ++;
}
//i为当前合法报数小孩
if(judge(j)){
//j不合格, 淘汰
cnt ++;
game[i] = false;
//cout << i << " " << j <<endl;
}
i ++; j ++;
}
for(int i = 1;i <= n;i ++){
if(game[i]){
cout << i;
break;
}
}
return 0;
}
3-Crontab
待更新…