2018 ICPC 南京網路賽 skr

2021-08-27 03:00:42 字數 1281 閱讀 6459

題意:給出乙個字串,求它的所有回文子串轉化成數字的和,對1e9+7取模。

題解:先上manacher,然後列舉每個點,按照半徑從大到小的順序列舉回文串,遇到出現過的就break,統計答案即可。

注意的是,判重時只能用pb_ds中的gp_hash_table,unordered_map會t,同時需要兩個字串hash關鍵子,乙個會wa。

manacher+暴力列舉回文串+pb_ds的hash_talbe判重+2個關鍵字的字串hash。

**:

#include#include#define n 2000010

#define inf 0x3f3f3f3f

#define eps 1e-10

#define pi 3.141592653589793

#define ll long long

#define pb push_back

#define cl clear

#define si size

#define lb lowwer_bound

#define mem(x) memset(x,0,sizeof x)

#define sc(x) scanf("%d",&x)

#define scc(x,y) scanf("%d%d",&x,&y)

#define sccc(x,y,z) scanf("%d%d%d",&x,&y,&z)

#define p 1000000007

#define mod 998244353

using namespace std;

#include #include #include #include using namespace __gnu_pbds;

char s[n],ss[n<<1];

int h[n],a[n],r[n<<1],p[n],pp[n],len;

gp_hash_tablemp;

int init()

void manacher()

}inline int cal(int x,int y)

inline int call(int x,int y)

int main()

}printf("%d\n",ans);}}

2018 icpc 南京網路賽

題目 鏈結 a.an olympian math problem 輸出n 1即可 女朋友猜的 includeusing namespace std define ll long long ll fac 103 int main for int i 1 i m i ll ans 0 for int i...

2018 icpc南京網路賽G 線段樹

思路 因為只有1e5的資料。我們可以模擬一下所有情況全算出來,把答案存下來即可。但會一遍一遍的遍歷超時,我們可以優化遍歷的方式,因為只有1e5的房間,我們每次找的房間都是小於當前新燈泡數且最前面的房間。這個查詢用一顆線段樹既可以解決。我們每次找到乙個滿足的房間就讓當前燈泡是減去這個房間的燈泡數,然後...

2018 icpc南京賽區網路賽 J題 附模板

求前1 n每個數的分解的非平方因子數乘積方式的和 用修改的線性篩做 a i 表示數i的分解方法數,對每個數多試幾組資料可以發現 1.質數的分解方法數始終為2 2.合數的分解方法數為其兩因子數的分解方法數的乘積 若該合數為平方數,則分解方法數要除4 若該合數的其中乙個因子是n次方數 n 3 則分解方法...