用三個雜湊分別記錄pat的位置,根據確定某一位置的a所能組成的pat的個數為a左側的p的個數 乘以 a右側的t的個數, 進行a的歷遍。
如果根據p a t三個慢慢歷遍肯定會超時。我還嘗試用二分法分別找第乙個在a右側的p和t,也超時了。還是找用遞推的方法省時間。
#include
#include
#include
#include
#include
#include
//用set試試
using
namespace std;
intupper_b
(int x,vector<
int> vec,
int left,
int right,
int flag)
}else
}while
(leftelse
}return left;
}int
main()
;}int len1=hashtablep.
size()
;int len2=hashtablea.
size()
;int len3=hashtablet.
size()
; i=0;
for(j=
0; j)while
(hashtablet[k]
cnt=
(cnt+i*
(len3-k))%
1000000007;}
printf
("%d"
,cnt)
;return0;
}
PAT乙級 1040 有幾個PAT 25分
題目 現給定字串,問一共可以形成多少個 pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過105,只包含 p a t 三種字母。輸出格式 在一行中輸出給定字串中包含多少個 pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。輸入樣例 輸出樣例 2我的 include in...
PAT乙級 1040 有幾個PAT 25分
1040 有幾個pat 25分 現給定字串,問一共可以形成多少個pat?輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。2很多題解都是前面的p乘以後面的t,又是設定ma...
PAT乙級 1040 有幾個PAT(25)
題目 現給定字串,問一共可以形成多少個pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過105,只包含p a t三種字母。輸出格式 在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對1000000007取餘數的結果。輸入樣例 輸出樣例 pat鏈結 sum of 每個 a 左邊...