avatar
fireworks99
keep hungry keep foolish

银联高校极客挑战赛 初赛 第一场

Description

Description

这题的坑跟今年山东省赛(ACM)C题相同

看题目描述最后一句话:在这M个赛季过程中,最高净胜场是多少?

是过程中,而不是整个赛季结束后!

若完成一个循环形式呈“盈利式”,则最佳状态取在首场“单位循环最佳收益”完成后

若完成一个循环形式呈“亏损式”,则最佳状态取在末场”单位循环最佳收益”完成后

关于“单位循环最佳收益”best:

如 +1 +1 +1 -1 -1 -1 + 2 -1

best取3,取在第三位后,而非第七位(+2)后

而“单位循环固定收益”basis为 1

Code

#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long

int main()
{
    ll t, n, k, ck, m, cnt, num, num_max;
    char ch;
    scanf("%lld", &t);
    while(t--)
    {
        cnt = 0, num_max = num = 0;
        scanf("%lld%lld%lld", &n, &k, &m);
        ck = k;
        getchar();
        for(int i = 0; i < n; ++i)
        {
            scanf("%c", &ch);
            if(ch == '1')
                cnt++, num++;
            else
            {
                if(ck)
                    ck--;
                else
                    num--;
            }
            if(num > num_max)
                num_max = num;
        }
        if(n - cnt <= k)
            cout << m * cnt << '\n';
        else
        {
            if(n - cnt - k <= cnt)///卡用光仍有输场
                cout << (m - 1) * (2 * cnt - n + k) + num_max << '\n';
            else
                cout << (num_max > 0 ? num_max : 0) << '\n';
        }
    }
    return 0;
}

省赛C题更狠,那题“单位循环最佳收益”与“单位循环固定收益”是不同向的!“收益”有了方向!

完成一个循环呈“盈利式”,但最佳状态也可能取在第一场的“单位循环最佳收益”完成后!

假设只有两次循环时,best = 5,与x轴夹角为0°,basis = 2, 与x轴夹角180°(接近180即可),这样一来,正确答案应为5,答案7 (2 + 5)就是错误答案了

Site by Baole Zhao | Powered by Hexo | theme PreciousJoy