題目描述:
蒜頭君有很多組字串形如 x,y, xx 的長度不確定,而 yy 的長度是 22。
如果有兩組字串 a , ba,b,例如 a =a= 和 b =b= ,aa 組的第二個字串是 bb 組第乙個字串的開頭,而 bb 組的第二個字串是 aa 組第乙個字串的開頭。這是乙個非常有趣的現象,蒜頭君會認為這兩組字串 a,ba,b 存在一種特殊關係。
但是蒜頭君又覺得例如 a =a= , b =b= 這樣兩組字串是沒有特殊關係的,因為它們的第二個字串相同。
現在蒜頭君有 nn 組字串,他想要知道這些字串中有多少組存在特殊關係。
輸入格式
第一行輸入乙個整數 nn,表示有 nn 組字串;
接下來 nn 行,每行輸入兩個字串 x,yx,y(均為大寫字母)。
注意:有可能有多個城市叫一樣的名字,但是它們肯定不屬於同乙個省。
注意可能存在相同的 xx 字串,但保證對於相同的 xx 所對應的字串 yy 一定不同
輸出格式
輸出這些字串中有多少組存在特殊關係。
資料範圍
對於 100% 的資料,1≤n≤200000,2≤∣x∣,∣y∣≤10,輸入保證所有字串都由大寫字母構成
樣例輸入
5jisuanke su
suanke ji
jisuan su
jisk sk
sksk sk
樣例輸出
2在練習的時候卡了很久,腦子不好使不知道怎麼用map來儲存。本題y固定為2,可以直接採用4位26進製的hash,直接將字串a的前兩位與字串b連線起來,然後hash維護兩個陣列,乙個陣列h1表示原來的數,另乙個陣列h2用來表示翻轉後的數,將兩者的乘積相加,最後除以2輸出即為答案。
#include
#include
#include
#include
using
namespace std;
#define mp make_pair
const
int maxn=
2e5+5;
int n;
int h1[26*
26*26*
27], h2[26*
26*26*
27];char s1[20]
,s2[20]
;int
main()
}long
long ans =0;
for(
int i =
0; i <26*
26*26*
27; i++
) cout << ans /
2<< endl;
return0;
}
計蒜客 特殊質數
7331是乙個特殊的質數,因為我們去掉個位得到的733是乙個質數 再次去掉個位得到的73又是乙個質數 再去掉個位後得到的7依然是乙個質數。對於形似這種的質數,我們稱呼它為特殊質數。寫乙個程式對給定的待求特殊質數的位數 n 1 n 8 求出所有對應位數的特殊質數 注意 數字1不被看作乙個質數 輸入包括...
計蒜客t36352 魔法
肯定我要佔滿所有的葉子結點,否則以乙個葉子節點建樹的時候你選的所有點就都在一棵子樹裡,也就不符合要求。反過來,選擇了所有葉子節點,可以證明它是可行的,所以葉子節點構成的集合滿足要求而且最小。如果k 0 k 0k 0直接求出度為1 11的點的數目就好了 如果k 1 k 1k 1,列舉刪哪條邊,我用 x...
紅與黑 計蒜客 T1211
題目鏈結 典型的深搜題,基礎題。蒜廠有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入格式第一行是兩個整數 w和 h,分別表示 x 方向和 y 方向瓷磚的數量。w 和 h 都不超過 ...