当前位置: 代码迷 >> 综合 >> codeforces1426E. Rock, Paper, Scissors
  详细解决方案

codeforces1426E. Rock, Paper, Scissors

热度:78   发布时间:2023-11-24 00:25:06.0

题意:a b两人石头剪刀布共出n次,分别给出每个人的三种可能次数,求a赢的最小次数和最大次数

最大次数即取a三种状态和b对应状态的最小值相加

最小次数,对于a的每种状态,使这种状态平局和失败的次数最大,即抵消中的最小值, 此时a b两人可能都剩一种状态或全0; 对于每种状态,最大值若等于,此时其他两种状态一种为平局一种为失败,剩余即为最小答案.

#include <bits/stdc++.h>
using namespace std;int main() {ios_base::sync_with_stdio(false), cin.tie(nullptr);int N;cin >> N;std::array<int, 3> A;cin >> A[0] >> A[1] >> A[2];std::array<int, 3> B;cin >> B[0] >> B[1] >> B[2];// R S P, so 0 beats 1 beats 2 beats 0// A wins as many as few as possible// N - max flow along non-winning edgescout << max({ 0, A[0] + B[1] - N, A[1] + B[2] - N, A[2] + B[0] - N }) << ' ';// max-flow along winning edgescout << min(A[0], B[1]) + min(A[1], B[2]) + min(A[2], B[0]) << '\n';return 0;
}

 

  相关解决方案