Codeforces round #273 (Div. 2)

Source: Internet
Author: User
Codeforces round #273 (Div. 2)

Question Link

A: sign in. You only need to determine whether the sum is a multiple of 5. Pay attention to 0.

B: When the maximum value is set, one is first placed for each set, and the rest is dropped to one set. The minimum value is the average score as much as possible.

C: If the three balls are A, B, and C from small to large, then the obvious answer (a + B) 2 <= C is a + B, because C must be left. If (a + B) 2> C, it will certainly be able to construct the optimal (A + B + C)/3, because it is certainly possible to take a and B to eliminate c first, and control the relationship between A and B to double or eliminate a pile, so that the remaining two stacks should be the same as possible.

D: DP, calculate the maximum height h first, and then 1 to h each column is regarded as an item, which is to select several components R and evaluate the number of conditions, we can solve this problem with the 01 backpack.

Code:

A:

#include <cstdio>#include <cstring>int c, sum = 0;int main() {for (int i = 0; i < 5; i++) {scanf("%d", &c);sum += c;}if (sum == 0 || sum % 5) printf("-1\n");else printf("%d\n", sum / 5);return 0;}

B:

#include <cstdio>#include <cstring>typedef long long ll;ll n, m;int main() {scanf("%lld%lld", &n, &m);ll yu = n - m + 1;ll Max = yu * (yu - 1) / 2;yu = n % m;ll sb = n / m;ll sbb = sb + 1;ll Min = 0;if (sbb % 2) {Min += yu * (sbb - 1) / 2 * sbb;} else Min += yu * sbb / 2 * (sbb - 1);if (sb % 2) {Min += (m - yu) * (sb - 1) / 2 * sb;} else Min += (m - yu) * sb / 2 * (sb - 1);printf("%lld %lld\n", Min, Max);return 0;}

C:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;ll a[3], ans = 0;int main() {for (ll i = 0; i < 3; i++)scanf("%lld", &a[i]);sort(a, a + 3);if ((a[0] + a[1]) * 2 >= a[2]) printf("%lld\n", (a[0] + a[1] + a[2]) / 3);else printf("%lld\n", a[0] + a[1]);return 0;}

D:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int N = 200005;const ll MOD = 1000000007;ll r, g;int n;ll dp[N];int main() {scanf("%lld%lld", &r, &g);if (r > g) swap(r, g);ll sum = 0;for (int i = 1; ;i++) {sum += i;if (sum >= r + g) {if (sum > r + g) {sum -= i;i--;}n = i;break;}}dp[0] = 1;for (int i = 1; i <= n; i++) {for (int j = r; j >= i; j--) {dp[j] = dp[j] + dp[j - i];if (dp[j] > MOD) dp[j] -= MOD;}}ll sb = 0;for (int i = 0; i <= r + g - sum; i++) {if (r < i) break;sb = (dp[r - i] + sb) % MOD;}printf("%lld\n", sb);return 0;}


Codeforces round #273 (Div. 2)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.