CSP賽前集訓 表示式

2021-09-29 06:06:08 字數 2019 閱讀 2230

題目描述:(暫不提供)

這道題放在第一題說明它很水。但是呢正是因為它很水但是細節較多所以我最後乙個寫這道題。結果呢後兩題做太久了,最好做的t1t1

t1反而沒拿分。

這道題說實話就是要考慮多種情況。

考慮把它分成三層:原串,去空格後的串,壓縮數字後的串。

對於原串你就判斷一下有沒有別的字元或者全是空格或者這就是乙個空串。

這些都是不合法的。

對於去掉空格的串就判斷一下連續空格兩端連線的字元關係就好了。

由於數字連在一起就不是乙個字元不好判斷,所以我們乾脆o(l

en

)o(len)

o(len)

的時間把這些連續的數字壓縮成任意乙個數字。

然後就兩兩判斷一下就好了。

細節真的有點多。就這樣吧,**實現能力還是要提高啊。

#include

#include

#include

using

namespace std;

const

int n =60;

string s;

int n,bz[n]

,f[n]

,len;

intpd

(char ch)

voidno(

)void

solve()

if(s[i]

!=' '

) fg =0;

if(s[i]

=='('

)++tot1;

if(s[i]

==')'

)++tot2;}if

(tot1 != tot2)

if(fg)if(

!len)

//原串

char s1[n]

,s2[n]

;int len1 =

0,len2 =0;

for(

int i =

0;i < len;

++ i)

if(s[i]

==' '

&& i && i < len -1)

if(x1 ==

2&& x2 ==4)

if(x1 ==

1&& x2 ==1)

}for

(int i =

0;i < len;

++ i)

if(s[i]

!=' '

) s1[

++len1]

= s[i]

;//去空格後的串

int i =

1,j =0;

for(

;i <= len1;

++i)if(

pd(s1[i])==

1)else s2[

++j]

= s1[i]

; len2 = j;

//壓縮數字後的串if(

pd(s2[1]

)==2||

pd(s2[1]

)==4)

for(

int i =

2;i <= len2;

++ i)if(

pd(s2[i])==

4&&(pd

(s2[i -1]

)==3||

pd(s2[i -1]

)==2)

)if(pd

(s2[i])==

1&&(pd

(s2[i -1]

)==4)

)if(pd

(s2[i])==

2&&(pd

(s2[i -1]

)==3||

pd(s2[i -1]

)==2)

)if(pd

(s2[i])==

2&&(i == len2 || i ==1)

)}if(len2 ==1)

}printf

("yes\n");

}int

main()

CSP賽前集訓 路徑

題目描述 暫不提供 這道題很明顯是一道原題。原題 gerald and giant chess 然後直接那麼做就好了 逃 這題其實之前也沒做過。但賽後聽說是原題結果發現果真是原題。首先n nn和m mm都很大,而k kk比較小,那麼我們的狀態肯定與k kk有關。首先將那k kk個點按照橫縱座標從小到...

CSP賽前集訓 長壽花

題目描述 暫不提供 這道題考場沒來得及看。很顯然這是一道dpdp dp題。首先我們設 g i,jg gi,j 為i ii個位置,j jj種裝飾,相鄰兩兩不同裝飾種類的方案數。只考慮1 j 1 j1 j種裝飾。g i,j gi 1,j j 1 g i 1,j 1 jg g j 1 g j gi,j g...

表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...