4 字
1 分钟
Codeforces Round (2021-04-29)
A
#include <cstdlib>#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;
int main() { int t; cin >> t; while(t--) { int r, b, d; cin >> r >> b >> d; if(r > b) swap(r, b); if(r <= b && 1ll * b <= 1ll * (1 + d) * r) cout << "YES" << endl; else cout << "NO" << endl; } return 0;}B
#include <cstdlib>#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;
int main() { int t; cin >> t; while(t--) { int n, m, k; cin >> n >> m >> k; if(k == n * m - 1) cout << "YES" << endl; else cout << "NO" << endl; } return 0;}C
#include <cstdlib>#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <vector>using namespace std;
typedef long long ll;const int maxn = 2e5 + 17;int n, u[maxn];vector<ll> v[maxn];ll s[maxn];int sz[maxn];
bool cmp(ll a, ll b) { return a > b;}
int main() { int T; scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) { s[i] = 0; v[i].clear(); sz[i] = 0; } for(int i = 1; i <= n; i++) scanf("%d", &u[i]); for(int i = 1; i <= n; i++) { int tmp; scanf("%d", &tmp); v[u[i]].push_back(1ll * tmp); sz[u[i]]++; } for(int i = 1; i <= n; i++) { int t = sz[i]; sort(v[i].begin(), v[i].end(), cmp); // for(int j = 0; j < t; j++) printf("%d%c", v[i][j], " \n"[j == t - 1]); for(int j = 1; j < t; j++) v[i][j] = v[i][j] + v[i][j - 1]; for(int j = 1; j <= t; j++) { s[j] += v[i][t / j * j - 1]; } } for(int i = 1; i <= n; i++) printf("%lld%c", s[i], " \n"[i == n]); } return 0;}D
#include <cstdlib>#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <vector>using namespace std;
typedef long long ll;const int maxn = 5e3 + 17;int n;ll a[maxn], b[maxn], f[maxn][maxn], ans;
bool cmp(ll a, ll b) { return a > b;}
int main() { cin >> n; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++) cin >> b[i]; for(int i = 1; i <= n; i++) f[1][1] += a[i] * b[i]; for(int i = 2; i <= n; i++) f[i][i] = f[1][1]; ans = f[1][1]; // cout << ans << endl; for(int l = 1; l < n; l++) { int r = l + 1; f[l][r] = f[1][1] - a[l] * b[l] - a[r] * b[r] + a[l] * b[r] + a[r] * b[l]; ans = max(ans, f[l][r]); } for(int i = 3; i <= n; i++) { for(int l = 1; l + i - 1 <= n; l++) { int r = l + i - 1; f[l][r] = f[l + 1][r - 1] - a[l] * b[l] - a[r] * b[r] + a[l] * b[r] + a[r] * b[l]; ans = max(ans, f[l][r]); } } // cout << f[3][5] << endl; cout << ans << endl; return 0;} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Codeforces Round (2021-04-29)
https://blog.treesonsnow.com/posts/codeforces-round-2021-04-29/ 部分信息可能已经过时
相关文章 智能推荐