NOIP T2 字串匹配

2021-10-11 23:40:05 字數 3199 閱讀 2942

考場上寫的是乙個常數較大的 o(n

ln⁡n)

o(n \ln n)

o(nlnn)

,但是犯了一些讓自己驚訝的致命錯誤,掛了一堆分。以下是考場**,並注釋錯誤。

#include

using

namespace std;

#define int long long

//1. 這個地方 4 倍常數,你不知道要卡時間嗎

const

int n =

1e6+

5, base =

27, p =

1e9+7;

// 2. 你這個陣列大小 2^20 絕對 re 了 啊

int n;

unsigned

long

long hs[n]

, w[n]

, lty[n]

;int sum[n][27

];//a - z

//int geths(int l, int r)

string s;

int orz[n]

, num[n]

, cnt[27]

, ac[n][27

];intksm

(int a,

int b)

return ans % p;

}unsigned

long

long

geths

(int l,

int r)

signed

main()

hs[0]

= s[0]

-'a'

;for

(int i =

1; i < len; i++

) hs[i]

=(hs[i -1]

+ w[i]

*(s[i]

-'a'

)% p)

% p;

for(

int i =

0; i < len; i++

)int lyf =0;

for(

int i =

0; i < len; i++

)for

(int j =

0; j <=

26; j++

)int ans =0;

for(

int i =

1; i < len; i++

)else

break;}

}printf

("%lld\n"

, ans);}

return0;

}/*3nnrnnr

zzzaab

mmlmmlo

5kkkkkkkkkkkkkkkkkkkk

lllllllllllllrrlllrr

cccccccccccccxc***cc

ccccccccccccccaababa

ggggggggggggggbaabab

*//*#include using namespace std;

#define int long long

const int n = 1e6 + 5, base = 23, p = 1e9 + 7;

int n, hs[n], w[n], lty[n];

int sum[n][26]; //a - z

int ksm(int a, int b)

return ans % p;

}int geths(int l, int r)

string s;

int orz[n];

signed main()

return 0;}/*

3nnrnnr

zzzaab

mmlmmlo

5kkkkkkkkkkkkkkkkkkkk

lllllllllllllrrlllrr

cccccccccccccxc***cc

ccccccccccccccaababa

ggggggggggggggbaabab

*/

改了之後只有 84 的**

#include

using

namespace std;

#define int short

const

int n =

1048577

, p =

1e9+7;

int n;

long

long hs[n]

, w[n]

, lty[n]

;int sum[n][27

];char s[n]

;int orz[n]

, num[n]

, cnt[27]

, ac[n][27

];long

long

ksm(

long

long a,

long

long b)

return ans % p;

}long

long

geths

(int l,

int r)

signed

main()

hs[0]

= s[0]

-'a'

;for

(int i =

1; i < len; i++

) hs[i]

=(hs[i -1]

+ w[i]

*(s[i]

-'a'

)% p)

% p;

for(

int i =

0; i < len; i++

)int lyf =0;

for(

int i =

0; i < len; i++

)for

(int j =

0; j <=

26; j++

)long

long ans =0;

for(

int i =

1; i < len; i++

)else

break;}

}printf

("%lld\n"

, ans);}

return0;

}

201409 3 字串匹配

試題編號 201409 3 試題名稱 字串匹配 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小...

20140903 字串匹配

問題描述 試題編號 201409 3 試題名稱 字串匹配 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母...

201409 3 字串匹配

問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小...