Codeforces Round #611 (Div. 3)
A. Minutes Before the New Year
一道水题,主要是拼手速,尽可能简化代码。
题解
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int m,n;
cin >> m >> n;
cout << (23-m)*60 + (60-n) << endl;
}
}
B. Candies Division
又是一道水题,尽可能快的完成此题。
题解
#include<bits/stdc++.h>
using namespace std;
int n,k,t;
int main(){
cin >> t;
while(t--){
cin >> n >> k;
int a = n/k;
if(n%k==0){
cout << n << endl;
}
else {
int b = k/2;
if(b<n-a*k){
cout << a*k+b <<endl;
}
else
cout << n << endl;
}
}
}
C. Friends and Gifts
题解
#include<bits/stdc++.h>
using namespace std;
#define N 200007
long long int n,a[N],b[N],k;
vector<int>c,d;
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
if(a[i]!=0){
b[a[i]] = 1;
}
else c.push_back(i);
}
for(int i=1;i<=n;i++){
if(b[i]==0) d.push_back(i);
}
for(int i=0;i<c.size()-1;i++){
if(c[i]==d[i]||c[i+1]==d[i+1])
swap(d[i],d[i+1]);
a[c[i]] = d[i];
}
a[c[c.size()-1]] = d[c.size()-1];
for(int i=1;i<=n;i++)
cout << a[i] << " ";
cout << endl;
}