比赛链接:传送门

Gym 101775A Chat Group(签到:待补)

Gym 101775B Scapegoat(待补)

Gym 101775C Traffic Light(贪心+思维)

思路:

需要证明两个点:

  ① 所有的N+1个S都是必须要走的,并且可以适当安排使得红灯只用等最长的一个。

  ② 上面这样的安排的答案是S0+S1+…+SN+max(Bi),而答案不可能比这个小,因为总有一种走法可以等到最长的那个红绿灯,如果其他的红绿灯也要等的话就比上面的方法大了。

#include <bits/stdc++.h>

using namespace std;
const int MAX_N = 1e3 + 5;

double S[MAX_N];
double A[MAX_N], B[MAX_N];

int main()
{
    int T;
    cin >> T;
    for (int kase = 1; kase <= T; kase++) {
        int N;
        cin >> N;
        for (int i = 0; i <= N; i++) {
            scanf("%lf", S+i);
        }
        double _max = -1;
        for (int i = 1; i <= N; i++) {
            scanf("%lf%lf", A+i, B+i);
            _max = max(_max, B[i]);
        }
        for (int i = 0; i <= N; i++) {
            _max += S[i];
        }
        printf("Case #%d: %.6lf\n", kase, _max);
    }
    return 0;
}
View Code

相关文章:

  • 2021-05-15
  • 2022-01-25
  • 2021-07-18
  • 2021-09-10
  • 2022-12-23
  • 2021-10-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案