Codeforces 798B 字串暴力

2021-08-25 08:25:41 字數 1161 閱讀 2701

n個字串,每個字串都可以做乙個操作:字串的第一位移到字串的末尾,剩下的字元向前進一位,問最少做多少次操作,所有字串能相等。

第一開始我想到的是純模擬,模擬字串向前移動的過程,然後n2

n

2搜尋最優解,不知不覺寫了5for迴圈,算了一下複雜度505

=109 505=

109

,心想肯定t了,然後交了一下,看看能不能卡過去,竟然跑了30m

s 30ms

ac了,果然資料很水,賽後看題解,發現一種巧妙的辦法,就是把字串×2倍,然後找子串,這樣的複雜度是 o(

n2+log2n

) o(n

2+

log2⁡n

),方法很好記錄一下。

#include 

#include

#include

#include

#define debug(x) cout<<#x<<" = "<#define inf 0x3f3f3f3f

using

namespace

std;

int cnt = 0, ans = inf, n;

string str[55], ori[55];

void init()

void frontstep1(string& a)

bool check(string a, string b)

int main(void)

}ans=min(ans,cnt);

}cout

0;}

#include 

#include

#include

#include

#define debug(x) cout<<#x<<" = "<#define inf 0x3f3f3f3f

using namespace std;

int main(void)

mmin=min(mmin,sum);

}cout0;}

Codeforces 798D 二維貪心找可行解

給兩個序列a,b然後找你找到乙個下標集合p,p的個數p.size n2 1 p.s ize n2 1 然後以p為下標的ab集合記作a2 b2a 2b 2,滿足2 sum a2 su m a 2 s um a 2 su m a 和2 sum b2 su m b 2 s um b 2 su m b 題目...

CODEFORCES 535B 解題報告

仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...

CodeForces 816B(區間計數)

codeforces 816b 題意 給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。解法 將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...