給n個字串,每個字串都可以做乙個操作:字串的第一位移到字串的末尾,剩下的字元向前進一位,問最少做多少次操作,所有字串能相等。
第一開始我想到的是純模擬,模擬字串向前移動的過程,然後n2
n
2搜尋最優解,不知不覺寫了5個for迴圈,算了一下複雜度505
=109 505=
109
,心想肯定t了,然後交了一下,看看能不能卡過去,竟然跑了30m
s 30ms
就ac了,果然資料很水,賽後看題解,發現一種巧妙的辦法,就是把字串×2倍,然後找子串,這樣的複雜度是 o(
n2+log2n
) o(n
2+
log2n
),方法很好記錄一下。
#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的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...