pat 甲級 1093(邏輯題)

2021-09-01 05:37:22 字數 501 閱讀 7534

思路:(1)要找pat的數量,先找到a在找到a前面p的個數c1,再找出a後面t的個數c2,

就能求出這個a構成的pat的個數,就是c1*c2;

(2)優化:先找出所有t的個數,然後每次遇到乙個t就減少1,遇到乙個p就+1,遇到a就已經知道

a前面的p和a後面的t。

(3)反思:一開始想用暴力,後來暴力不行就像找到p,在找p後面的a在找到a後面的t,但是時間超限了。

想想就三個,找到中間的就行了。

#include#include#includeusing namespace std;

typedef long long ll;

const ll mod = 1000000007;

ll ans,c1,c2;

char a[100010];

int main(void)

printf("%lld\n",ans);

return 0;

}

PAT甲級刷題

給定兩個字串s1和s2,刪除s1中在s2 現過的字元設定flag陣列,初始化為0。遍歷s2並將其字元轉化為ascii碼值,並在flag陣列中相應位置值標記為1,表示它出現過。再遍歷s1,若對應字元ascii碼值在flag陣列中相應位置值標記為0,則輸出。就是hash的思想,時間複雜度o len s1...

pat 甲級 1148 (思維題)

題意 n個人中,有兩個是狼人,其中不是所有狼人都說謊,說謊的人有兩個。思路 先確定狼人,然後找說謊的人,如果說謊的人有兩個且其中有乙個是狼人就輸出結果。反思 1 開始想先確定說謊的人,在確定狼人,但是總是有人不能確定是狼人還是普通人。2 可以通過乙個人說話的結果來判斷他是否說謊。include in...

pat 甲級 1101(細節題)

思路 找合適作為pivot point的點,要求是左邊的數字全部小於它,並且右邊的數字全部大於它 可以先從左開始向右判斷符合左邊數字全小於它的 大於最大值 然後再從右向左判斷右邊數字大於它的 小於最小值 注意 結尾一定要將換行分開輸出,不然寫成cout 要求的兩行不符。include include...