https://codeforces.com/contest/1530
AB题AC了
A - Binary Decimal
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef long long LL; const int N = 2e5 + 10; int t, n; int a[N]; int main(){ cin >> t; while(t--){ cin >> n; if(n < 10){ cout << n << endl; continue; } int res = 0; while(n){ res = max(res, n % 10); n /= 10; } printf("%d\n", res); } return 0; }
B - Putting Plates
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; typedef long long LL; const int N = 30; int t, h, w; int a[N][N]; int main(){ cin >> t; while(t--){ cin >> h >> w; memset(a, 0, sizeof(a)); for(int i = 1; i <= h; i++){ if(i == 1 || i == h){ for(int j = 1; j <= w; j++){ if(j % 2 == 1) a[i][j] = 1; } } else if(i != h - 1 && i % 2 == 1){ a[i][1] = 1; a[i][w] = 1; } } for(int i = 1; i <= h; i++){ for(int j = 1; j <= w; j++){ printf("%d", a[i][j]); } printf("\n"); } printf("\n"); } return 0; }
C - Pursuit
有个地方没想清楚
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; typedef long long LL; const int N = 1e5 + 10; int t, n; int a[N], b[N]; bool cmp(int a, int b){ return a > b; } int main(){ cin >> t; while(t--){ cin >> n; int k = n - n / 4; memset(a, 0, sizeof(a)); for(int i = 0; i < n; i++){ cin >> a[i]; } for(int i = 0; i < n; i++){ cin >> b[i]; } sort(a, a + n, cmp); sort(b, b + n, cmp); int suma = 0, sumb = 0; for(int i = 0; i < k; i++){ suma += a[i]; sumb += b[i]; } if(suma >= sumb){ printf("%d\n", 0); }else if(n == 1){ printf("%d\n", 1); } else{ int x = 1; while(suma < sumb){ //printf("orl suma = %d sumb = %d k = %d\n", suma, sumb, k); //int newk = (n + x) - (n + x) / 4; int detak = x - x / 4; suma += x * 100; //if(k < ) //printf("suma = %d detak = %d tmp = %d\n", suma, detak, x - detak); int tmp = x - detak; while(tmp--){ suma -= a[k--]; } //printf("new suma = %d\n", suma); x++; } printf("%d\n", x); } } return 0; }
一个ac的代码
#include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--){ int n;cin>>n; int a[n],b[n]; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n;i++)cin>>b[i]; sort(a,a+n); sort(b,b+n); if(n>1)for(int i=n-2;i>=0;i--){a[i]+=a[i+1];b[i]+=b[i+1];} for(int k=0;k<1e7;k++){ int z = 3*(n+k); z = (z%4==0) ? z/4 : (z/4 +1); int y = (z>n) ? b[0] : b[n-z]; if(100*k + a[n-z+k] >= y){cout<<k<<"\n";break;} } } return 0; }