水題不AC,自掛二叉樹 Chemist

2022-05-10 05:37:00 字數 1145 閱讀 2475

學長讓我們刷usaco的水題果然是有道理的,做了四道掛了兩道。。。細節處理一定要小心!大概都是noip day1 t1的難度,但是一定要考慮全面否則還是涼涼啊。

一、usaco1.1貪婪的送禮者

乙個人有一些錢分給一些夥伴,比如我有10塊錢分給5個人每人2塊(小學數學),當然如果資料都是這樣當然很弱智,但是還需要考慮分不完的情況,比如10塊錢分給3個人,每人三塊,自己剩一塊,多好多和諧。所以就是要在每次分時判斷人數是否被錢數整除,如果整除直接分,否則每個人分int(money/num),自己剩money%num。

**相信讀者都會而且還會暴露筆者噁心的碼風所以被和諧了。。。

二、usaco1.1壞掉的項鍊

由於是字串環所以可以先將這個字串複製乙份接在後面每次取其中長度為n的一段,相當於在開頭位置的斷開,然後從兩頭往後判斷是否為同乙個字元。

需要考慮的細節:

1.得到的珠子個數大於n,比如r r r r的情況,從左可以取4個,從右可以取4個,一共8個,然而顯然最多取4個。有兩種處理方式:(1)直接在輸出答案時判斷,答案大於n就輸出n,這時說明其中有重複取得珠子,只需將它給其中任意一邊即可。(2)記錄從左端取了mx1個,那麼右端最多取n-mx1個。

2.w在一串珠子中只能代表一種顏色,比如rrwb的情況,從左取3個的話從右最多取1個,從右取2個的話從左最多取2個,然而這種情況都是與第一種情況重合的所以不用另做考慮。

3.在比較時不能單純的將從左右開始的每乙個元素只與左右端點的顏色比較,因為可能存在左右端點為w的情況,所以需要從左開始找到第乙個不為w的顏色來作為參考,右邊同理。

**:

#includeusing

namespace

std;

intn;

char ch[1000

];int

main()

k1=ch[p1];

while(p1<=i+n-1

)

while(ch[p2]=='

w'&&p2>=i&&mx2mx1)

k2=ch[p2];

while(p2>=i&&mx2mx1)

ans=max(ans,mx1+mx2);

} printf(

"%d\n

",ans);

return0;

}

HDU 1710 二叉樹水題

傳送門 hdu 1710 水遞迴,記得以前剛學資料結構的時候還用結構體模擬字串做 用字串是通過string的find函式,這裡讀取的時候可以直接記錄先序遍歷的元素在中序中的位置 輸出左右子樹,然後輸出根 include include include using namespace std cons...

自字二叉樹

標準二叉樹的定義,每個節點有左右子節點和父節點,並且左邊的子節點比父節點小,右邊的子節點比父節點大 定義person類,屬性name,age 節點類 class node mytree類,add和toarray方法 class mytree else else else 新增資料 public vo...

(二叉樹提高題)還原二叉樹

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入格式 輸入首先給出正整數n 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出格式 輸出為乙個整數,即該二叉樹的高度。輸入樣例 9 abdfghiec fdhgi...