C 三色配對

2021-10-06 15:48:25 字數 1381 閱讀 4219

給定乙個長度為nn的字串ss 。保證ss 由 「r」, 「g」, 「b」三種字元組成。

現在問,一共有多少個不同的三元組(i,j,k)(i,j,k)滿足下面兩個條件:

si≠sj,si≠sk,sj≠sksi≠sj,si≠sk,sj≠sk;

j−i≠k−jj−i≠k−j.

三元組還要保證 i輸入格式

第一行乙個整數n。

第二行,長度為n的字串 ss

輸出格式

乙個整數,表示答案。

input_1

4

rrgb

output_1
1
input_2
39

rbrbgrbggbbrrgbbrrrbggbrbgbrbgbrbbbgbbb

output_2
1800
資料規模與約定

50% 資料保證 n≤50

70% 資料保證 n≤1000

100% 資料保證 1≤n≤4000

時間限制:1s

空間限制:256mb

暴力是一種很不錯的思路

列舉每一位,查詢到符合條件的組合的數量,**如下:

#include

using

namespace std;

long

long ans,n;

char a[

110000];

intmain()

}}cout<

return0;

}

當你寫完暴力演算法時,我可以告訴你:暴力時超時的

這裡就要乙個簡單的模型轉換:各種字元的個數的乘積就是滿足條件1的方案數

再減去不符合條件2的方案的數目就行了,**如下:

#include

using

namespace std;

long

long x1,x2,x3,n;

char a[

11000];

intmain()

long

long ans=x1*x2*x3;

for(

int i=

1;i<=n;i++)}

cout<

return0;

}

最後的最後,希望看見此部落格的所有older們,以理解為主,不要直接複製**.

雙色 三色排序問題

實現乙個函式,給定乙個陣列,要求使得陣列中負數在所有正數的前面 實現乙個函式,給定乙個陣列,要求使得陣列中負數在前正數在後零在中間 1 include2 include34 輸出陣列元素 5void print int arr,int len 6 交換兩個數 7void swap int left,...

三色旗問題

三色旗問題 假設有乙個陣列,它有n個元素,每乙個不外乎是紅,白,藍3種顏色之一的代號,就用r,w,b代表。這些元素在陣列中並沒有依同樣顏色的元素排在一起的方式來排列,請寫乙個程式把這些元素排成所有藍色在前,接著是白色,最後是紅色的排列方式,不過在寫程式時要滿足下面的條件 1 不能用額外的記憶體,換句...

三色旗問題

假設有一根繩子,上面有一些紅 白 藍色的旗子。起初旗子的順序是任意的,現在要求用最少的次數移動這些旗子,使得它們按照藍 白 紅的順序排列。注意只能在繩子上操作,並且一次只能調換兩個旗子。分析 其實要移動旗子得到要求的結果很簡單,但是需要注意的是需要移動最少的次數這個限制條件。網上的一種解法 從繩子開...