2020寒假牛客第一場 G eli和字串

2021-10-03 03:05:55 字數 1384 閱讀 3296

(1)某個字母不確定,無從下手

牛客競賽題解

一,簡單的佇列模擬

遍歷字串,每次:

(1)把每個字元放進乙個佇列que[maxn]中,把每個字元

j = int(str[i]) -『a』 + 1 放進對應26個字母字首和陣列num[30]裡。

(2)直到某次str[i]這個字母在num[j]記錄的個數達到k次,讓字母從頭開始出隊(head++)直到指到了str[i]這個字母,此時字串長度len,在這個過程中失去的字母,如果組成了子串,則長度必然大於len,不用考慮

(3)重複上述操作,記下最小值

#include

#define maxn 200010

#define inf 9999999

using

namespace std;

int n,k,ans=inf;

int que[maxn]

,head=

1,tail=0;

int num[30]

;string str;

intmain()

else

--num[que[head]],

++head;

//不是達到k次的字母,出隊的字母次數減一}}

}if(ans==inf)

printf

("-1");

//遍歷完成,所有字母沒能達到k次

else

printf

("%d"

,ans)

;return0;

}

二,直接暴力建立結構體,包含該字母位置陣列和個數;

遍歷一遍字串,記下各個字母位置和個數;

遍歷一遍26個結構體,記下最小長度:

(1)每個結構體中,有n個字母,要比較n-k次

#include

using

namespace std;

struct node

sum[30]

;int

main()

int ans =

10000010

;for

(int i=

0; i<

26; i++)if

(ans !=

10000010

) cout<

else cout<

;}

牛客寒假多校第一場A

題目描述 在絕地求生 吃雞 遊戲裡,不同的槍枝有不同的威力,更是可以搭配不同的配件,以提公升槍枝的效能。每一把槍都有其威力及其可裝備配件種類。每乙個配件有其所屬種類,可以為槍枝提供威力的百分比加成。每一把槍只能裝備乙個同類配件。給你n把槍枝和m個配件,槍的威力為p,可裝備的配件數量為k,為k個不同型...

2020 牛客多校第一場

a b suffix array f infinite string comparision jzk開場提出了兩倍最大的長度,然後 dh 說直接比較a b和b a即可,由於是訓練賽,不想寫太長的 然後交了一發直接比較的 就過了 includeusing namespace std string s1...

牛客寒假第一場訓練賽

比賽鏈結 題解b題 構造題先找構造括號效率比較高的方法 這種括號裡面套括號效率比較高而且合法 所以思路就是對所給整數開方,剩餘的零頭我們用列舉的方法。但是對於一些資料直接用開方得到的數x構造的話,會導致零頭太小,不好構造零頭 第一步構造的是乙個對稱的括號,有x個左括號,如果零頭小於x的話,就不好構造...