給定乙個長度為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
output_14
rrgb
1
input_2output_239
rbrbgrbggbbrrgbbrrrbggbrbgbrbgbrbbbgbbb
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的方案的數目就行了,**如下:
最後的最後,希望看見此部落格的所有older們,以#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;
}
理解
為主,不要直接複製
**. 雙色 三色排序問題
實現乙個函式,給定乙個陣列,要求使得陣列中負數在所有正數的前面 實現乙個函式,給定乙個陣列,要求使得陣列中負數在前正數在後零在中間 1 include2 include34 輸出陣列元素 5void print int arr,int len 6 交換兩個數 7void swap int left,...
三色旗問題
三色旗問題 假設有乙個陣列,它有n個元素,每乙個不外乎是紅,白,藍3種顏色之一的代號,就用r,w,b代表。這些元素在陣列中並沒有依同樣顏色的元素排在一起的方式來排列,請寫乙個程式把這些元素排成所有藍色在前,接著是白色,最後是紅色的排列方式,不過在寫程式時要滿足下面的條件 1 不能用額外的記憶體,換句...
三色旗問題
假設有一根繩子,上面有一些紅 白 藍色的旗子。起初旗子的順序是任意的,現在要求用最少的次數移動這些旗子,使得它們按照藍 白 紅的順序排列。注意只能在繩子上操作,並且一次只能調換兩個旗子。分析 其實要移動旗子得到要求的結果很簡單,但是需要注意的是需要移動最少的次數這個限制條件。網上的一種解法 從繩子開...