小 M 的算式(dfs)

2022-02-23 12:27:30 字數 1418 閱讀 4382

【問題描述】

小 m 在做數學作業的時候遇到了乙個有趣的問題:有乙個長度為 n 的數字

串 s,小 m 需要在數字之間填入若干個「+」和恰好乙個「=」,使其成為乙個

合法的等式。如對於 s=「2349」,可以通過新增 2個「+」和 1 個「=」成為

「2+3+4=9」。

小 m 發現有些數字串是無法通過新增符號成為乙個合法的等式的,她想知

道對於每乙個給定的數字串 s,是否可以通過新增符號使之成為乙個合法的等

式(允許前導 0)?

【輸入】

第一行為資料組數 t,表示有 t組輸入資料。

接下來 t行每行乙個數字串 s。

【輸出】

對於每組資料,若 s可以成為合法的等式,輸出「yes」,否則輸出

「no」,以單行回車隔開。

【輸入輸出樣例】

42349

233233

122323

2344322322

yesyes

noyes

【輸入輸出樣例解釋】

2+3+4=9

233=233

2+34=4+3+2+2+3+22

【資料範圍】

對於 50%的資料:1 ≤ t ≤ 3,1 ≤ n ≤ 4。

對於 100%的資料:1 ≤ t ≤ 5,1 ≤ n ≤ 10。

本題純正dfs,**並不是很難。

用狀態壓縮更優,但直接dfs也能過。

#include#include

#include

#include

using

namespace

std;

#define rep(i,s,t) for(int i=s;i<=t;i++)

#define dwn(i,s,t) for(int i=s;i>=t;i--)

#define mp make_pair

#define pb push_back

#define xx first

#define yy secondtypedef

long

long

ll;typedef pair

pii;

inline

intread()

const

int maxn=10

;char

s[maxn];

intn;

intsolve()

left+=cur;cur=0

; rep(i,x+1

,n)

right+=cur;cur=0

;

if(left==right) return1;}}

return0;

}int

main()

PAT1 馬虎算式(暴力 dfs)

小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。有一次,老師出的題目是 36 x 495 他卻給抄成了 396 x 45 但結果卻很戲劇性,他的答案竟然是對的!因為 36 495 396 45 17820 類似這樣的巧合情況可能還有很多,比如 27 594 297 54 假設 a b ...

3438 小M的作物

time limit 10 sec memory limit 256 mb submit 1078 solved 468 submit status discuss 小m在mc裡開闢了兩塊巨大的耕地a和b 你可以認為容量是無窮 現在,小p有n中作物的種子,每種作物的種子 有1個 就是可以種一棵作物 ...

題解 小M的作物

題目戳我 text 這題要求最大收穫,可以轉化為所有可能的收益減去最小割。單個點很好連邊 s to pos to t 問題在於如何處理組合的點。觀察到,乙個組合要不然全部都劃分到某乙個集合,要不然不做貢獻。注意到組合裡面的點是不能拆開的。所以我們建立乙個組合虛點,它連線所有組合內的點,邊權是 inf...