一道簡單的題目

2021-05-26 16:01:00 字數 1231 閱讀 3470

這是校賽的一道題,當時覺得挺難,後來就覺得簡單,知道思路後就很好做了。

題目是這樣子的:

1008: 植樹節b

time limit: 1 sec  memory limit: 128 mb

submit: 4  solved: 4

[submit][status][web board]

description

植樹節那天每個班級都要掛出宣傳標語,學校要對每個班級的宣傳標語進行打分,得到的分數就是

該標語裡含有子串行「312」的個數(其中3,1,2三個數字允許不相鄰但一定要按照該順序),例

如,給定序列33122,那麼得分為4(第乙個3, 1,第乙個2;第乙個3, 1,第二個2;第二個3, 1,

第乙個2;第二個3, 1,第二個2,共4個,所以得分為4)。給乙個宣傳標語,請給出這條標語的得

分。input

先輸入t,表示輸入t個測試資料,對於每個測試資料,輸入乙個字串,表示一條標語,標語長度

<100000。

output

對於每個測試資料,輸出一行,乙個數字,表示這條標語的得分(得分不會超過int的表示範圍)。

sample input

133122

sample output

4首先這道題目要是直接用三個for語句是絕對會超時的,算到死都算不了,那麼簡單他也不會讓你做。。。首先我們特別注意一下這個「1」,只要前面有3,後面有2,他就有意義,所以,在一串數字中,我們記錄下每個一前面3的總數和後面2的總數,兩個總數相乘就得到這個1所能成就的312。。  就如數字串33113122  (注意 2 要從右邊往左數,因為2在1的右邊)

n3           1     2      2     2     3    3     3     3

-------------------->

3 3 1 1 3 1 2 2

<---------------------

n2            2     2     2      2    2      2      2    1

然後每個1  所對應的n3 *n2 便是該1所成就的312的個數,最後把每個相加就可以得到結果了。 

我寫的**如下:

#include #include #include using namespace std;

int main()

} for(i=strlen(s)-1;i>=0;i--)

}for(i=0;i

一道簡單的題目

這是一道leetcode的題目,描述如下 given an unsorted integer array,find the first missing positive integer.for example,given 1,2,0 return 3,and 3,4,1,1 return 2.you...

一道簡單的acm題目

acm協會主席alphard決定在除夕夜辦一場山寨春晚,立即得到廣大acmer的支援。報名的acmer眾多,主席已經開始忙不過來了。幸好有 細心 的angelclover幫忙,把報名參加山寨春晚的節目單按照預演時間進行了歸類。alphard要求春晚不要超過4小時,但為了不打擊廣大acmer的積極性,...

一道this的題目

請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...