Codeforces Round 674 (Div. 3) 解题报告

CF1426E Rock, Paper, Scissors

Codeforces Round 674 (Div. 3) 第五题,签到题。

题意翻译

Alice 和 Bob 进行剪刀石头布的游戏,总共进行 \( n \) 局。

Alice 出石头 \( a _ 1 \) 次,出剪刀 \( a _ 2 \) 次,出布 \( a _ 3 \) 次。

Bob 出石头 \( b _ 1 \) 次,出剪刀 \( b _ 2 \) 次,出布 \( b _ 3 \) 次。

问 Alice 最少赢多少次,最多赢多少次。

题解

显然最少赢 \( n – \min \{ a _ 1 , n – b _ 2 \} – \min \{ a _ 2 , n – b _ 3 \} – \min \{ a _ 3 , n – b _ 1 \} \),最多赢 \( \min \{ a _ 1 , b _ 2 \} + \min \{ a _ 2 , b _ 3 \} + \min \{ a _ 3 , b _ 1 \} \)。

#include <bits/stdc++.h>
using namespace std;
#define reg register
typedef long long ll;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1++)
static char buf[100000], *p1 = buf, *p2 = buf;
inline int read(void)
{
    reg char ch = getchar();
    reg int res = 0;
    while (ch < '0' || '9' < ch)
        ch = getchar();
    while ('0' <= ch && ch <= '9')
        res = 10 * res + ch - '0', ch = getchar();
    return res;
}

int n, a1, a2, a3, b1, b2, b3;

int main(void)
{
    n = read();                                                                                                          //读入
    a1 = read(), a2 = read(), a3 = read();                                                                               //读入
    b1 = read(), b2 = read(), b3 = read();                                                                               //读入
    printf("%d %d\n", n - min(a1, n - b2) - min(a2, n - b3) - min(a3, n - b1), min(a1, b2) + min(a2, b3) + min(a3, b1)); //直接输出答案
    return 0;
}
Pages: 1 2 3 4 5 6 7 8