題目描述
碼隊的女朋友非常喜歡玩某款手游,她想讓碼隊帶他上分。但是碼隊可能不會帶青銅段位的女朋友上分,因為碼隊的段位太高(已經到達王者),恐怕不能和他的女朋友匹配游戲。
碼隊的女朋友有些失落,她希望能盡快沖上王者。這個賽季開始了,求勝心切的碼隊的女朋友想讓碼隊幫她計算一個問題:
這個賽季碼隊的女朋友一共打了 $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<bits/stdc++.h>
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$ 條。
現在,碼隊的女朋友希望給折扇的支架和弧染上 $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