jsk

题目描述

码队的女朋友非常喜欢玩某款手游,她想让码队带他上分。但是码队可能不会带青铜段位的女朋友上分,因为码队的段位太高(已经到达王者),恐怕不能和他的女朋友匹配游戏。

码队的女朋友有些失落,她希望能尽快冲上王者。这个赛季开始了,求胜心切的码队的女朋友想让码队帮她计算一个问题:

这个赛季码队的女朋友一共打了 $N$ 场排位赛,每一场排位赛中,码队女朋友的成绩用 $S_i$ 来表示(成绩只可能为“赢”或“输”。 $1$ 代表码队女朋友赢了这场比赛,$0$ 则代表输了这场比赛)。由于这款游戏使用净胜场数这个数据指标来衡量玩家能否晋级更高的段位(玩家净胜场数 = 玩家赢场数 - 玩家输场数),所以码队的女朋友想知道,这个赛季的过程中她的最高净胜场次。

码队听完他女朋友的问题之后,觉得她有些天真,因为码队知道,这家游戏厂商可能出于不想让玩家早“弃坑”的目的,所以在每个赛季都会给每位玩家发出 $K$ 张 「排位保护卡」。如果一名玩家在一场排位赛中输掉了游戏,但 TA 还有排位保护卡,那么系统将自动为 TA 用掉一张排位保护卡,帮该玩家抵消这场输掉的排位赛(即在系统记录成绩时,不将该局游戏计入玩家的输场数)。但是,如果一名玩家在某个赛季中,没有用完这 $K$ 张排位保护卡,那么这些剩余的排位保护卡将失效,不能在下个赛季继续使用。

听完码队说的这些事情以后,码队的女朋友变得更有信心了!现在,码队的女朋友想求助你:如果按照这个赛季的这 $N$ 场排位赛成绩来计算,经过 $M$ 个赛季(假设每个赛季都打 $N$ 场排位赛,且每个赛季都获得了完全相同的排位赛成绩),那在这 $M$ 个赛季过程中,她的最高净胜是多少场?

输入格式

第一行一个整数 $T$,表示有几组数据($T \le 1000$)。

对于每一组测试数据:第一行有三个整数 $N,K,M$,分别代表码队的女朋友在一个赛季里总共打了 $N$ 场排位赛,每个赛季有 $K$ 张排位保护卡,总共将进行 $M$ 个赛季,以空格分隔。($1\le K \le N \le 100$,$1 \le M \le 10^9$)

接下来一行,输入一个长度为 $N$ 的字符串(只由 $0$ 和 $1$ 组成),代表码队的女朋友在一个赛季里的每场排位赛中的成绩 $S_i$ $(i=1,2, \cdots ,N)$。

输出格式

对于每一组测试数据,输出一行。

每行只包含一个整数,代表在 $M$ 个赛季过程中,码队的女朋友最高能净胜多少场游戏。如果净胜场数为负,请输出 $0$。

输出时每行末尾的多余空格,不影响答案正确性

样例输入1 复制
1
5 1 2
11110
样例输出1 复制
8
样例输入2 复制
1
5 2 2
00101
样例输出2 复制
2

给你个长度为nm的0 1串,可以去掉xn+1~x*n+n中最多k个0,求最大净胜场

#include
using namespace std;
#define N 110
#define LL long long
LL s[N];
char a[N];
int main()
{
    int t,n,i,j,k;
    LL m,ans,res,s1,s2;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%lld",&n,&k,&m);
        scanf("%s",a+1);
        s[0]=0;
        s1=0;
        s2=k;
        res=0;
        for(i=1;i<=n;i++)
        {
            if(a[i]=='0')
            {
                if(s2)
                    s2--;
                else
                    s1--;
            }
            else
            {
                s1++;
            }
            s[i]=s1;
            res=max(res,s[i]);
        }
        if(s1<=0)
            ans=res;
        else
        {
            ans=res+(m-1)*s1;
        }
        printf("%lld\n",ans);
    }
    return 0;
}

题目描述

码队的女朋友喜欢收集折扇,更喜欢给折扇染上花花绿绿的颜色,使它们看起来五彩斑斓。折扇的形状如下。手握处的支架有 \(n\) 条,上面的弧有 \(n-1\) 条。

jsk_第1张图片

现在,码队的女朋友希望给折扇的支架和弧染上 \(m\) 种颜色,一条支架或一条弧只染一种色,且有公共端点的弧与弧、弧与支架、支架与支架之间不能染同一种颜色。

码队的女朋友请你帮忙,求出所有可行的染色方案的数量。

码队的女朋友提示你:折扇的正面和背面是不一样的,因此不用考虑折扇对称的情况。换言之,每条支架、每条弧都是不一样的。

答案对 \(10^9 + 7\) 取模。

输入格式

有多组数据。

第一行输入一个整数,表示有 \(T\) 组数据。

对于每一组测试数据:输入一行,包含两个整数,分别是 \(n\)\(m\),以空格分隔。保证 \(n \le m\)

输出格式

对于每一组数据,输出一行。

每行只包含一个整数,表示所有可行的染色方案的数量。

数据范围

对于全部数据,\(T \le 10,2 \le n \le m \le 500000\)

输出时每行末尾的多余空格,不影响答案正确性

样例输入 复制
3
2 3
4 4
4 6
样例输出 复制
6
96
15120

你可能感兴趣的:(jsk)