这场真的是xjb乱做
A
#include <cstdio>
#include <cctype>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef long long ll;
const int qq = 1e6 + 10;
int num[qq];
int n, m, k;
int main(){
ll sum = 0;
scanf("%d", &n);
for(int i = 0; i < n; ++i) scanf("%d", num + i);
sort(num, num + n);
for(int i = 0; i < n - 1; ++i)
sum += (num[n - 1] - num[i]);
printf("%lld\n", sum);
return 0;
}
B
#include <cstdio>
#include <cctype>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef long long ll;
const int qq = 1e5 + 10;
int num[qq];
int n, m, k;
int vis[10];
int used[300];
int countc[300];
char color[4] = {'R', 'B', 'Y', 'G'};
int main(){
string x; cin >> x;
memset(used, 0, sizeof(used));
memset(vis, 0, sizeof(vis));
int a, b, c, d;
a = b = c = d = 0;
for(int i = 0; i < 4; i++){
int p = i;
while(x[p] == '!' && p < (int)x.size()){
p += 4;
}
if(p < (int)x.size()){
vis[i] = x[p];
used[x[p]] = 1;
}
}
for(int i = 0; i < 4; ++i){
if(!vis[i]){
for(int j = 0; j < 4; ++j){
if(!used[color[j]]){
vis[i] = color[j];
used[color[j]] = 1;
break;
}
}
}
}
for(int i = 0; i < (int)x.size(); ++i){
if(x[i] == '!') countc[vis[i % 4]]++;
}
printf("%d %d %d %d\n", countc['R'], countc['B'], countc['Y'], countc['G']);
return 0;
}
C
#include <cstdio>
#include <cctype>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef long long ll;
const int qq = 1e5 + 10;
int num[qq];
ll n, m, k, x, y;
int main(){
scanf("%lld%lld%lld%lld%lld", &n, &m, &k, &x, &y);
if(n * m == k){
printf("1 1 1\n");
return 0;
}
if(n * m > k){
printf("1 0 %d\n", k >= (x - 1) * m + y ? 1 : 0);
return 0;
}
if(n == 1){
printf("%lld %lld %lld\n", k / m + (k % m == 0 ? 0 : 1), k / m, k / m + (y > (k % m) ? 0 : 1));
return 0;
}
if(n == 2){
int p = 0;
if(k % (2 * m) >= (x - 1) * m + y) p = 1;
printf("%lld %lld %lld\n", k / (2 * m) + (k % (2 * m) == 0 ? 0 : 1), k / (2 * m), k / (2 * m) + p);
return 0;
}
k = k - n * m;
ll maxn = 1 + k / ((n * m) - m) + (k % (n * m - m) == 0 ? 0 : 1);
ll minx = 1 + (k / ((n * m) - m)) / 2;
ll res;
if(x == 1){
res = 1 + (k / (n * m - m) + 1) / 2;
}else if(x == n){
res = 1 + (k / (n * m - m)) / 2;
}else{
res = 1 + (k / (n * m - m));
}
int c = k % (n * m - m);
if((k / (n * m - m)) % 2 == 0){
for(int i = n - 1; i >= 1 && c; --i)
for(int j = 1; j <= m && c; ++j){
if(i == x && j == y) res++;
c--;
}
}else{
for(int i = 2; i <= n && c; ++i)
for(int j = 1; j <= m && c; ++j){
if(x == i && y == j) res++;
c--;
}
}
printf("%lld %lld %lld\n", maxn, minx, res);
return 0;
}