ZOJ 3829 模擬貪心

2021-06-26 07:54:21 字數 673 閱讀 4530

2014牡丹江現場賽水題

給出波蘭式,判斷其是否合法,如果不合法有兩種操作:

1:任意位置加乙個數字或者操作符

2:任意兩個位置的元素對調

貪心模擬即可

先判斷數字數是否大於操作符數,若不大於 ans+=sum2-sum1+1;新加入的數字全部放到左端。

然後從左到右遍歷一遍,儲存到當前位置為止,數字數和sum1,和運算元和sum2

若sum2>=1sum1,優先與隊尾的數字對調,若沒有則sum1++,表示在最左端加乙個數字

#include "stdio.h"

#include "string.h"

int main()

if (sum1==0)

ans=0;

if (sum1<=sum2)

else sum1=sum2=0;

for (i=0;str[i];i++)

if (str[i]=='*') sum2++;

if (sum1>sum2) continue;

else

if (ok==0)

else}}

}if (str[len-1]!='*') ans++;

printf("%d\n",ans);

}return 0;

}

ZOJ 2615 用棧模擬dfs

zoj 2615整整弄了兩天,雖然說題目意思很簡單,就是dfs。但是由於資料過大,不得不採取用棧去模擬dfs的方法,下面做一下總結 題目大意就是給你兩個數,詢問前乙個數是否為後乙個數的祖先,在做題過程中,由於查詢次數過多,所以借鑑了網上的思路,用出入棧次序去判斷。如下 基本思路 在模擬dfs過程中子...

ZOJ 4024 Peak(模擬,水題)

題幹 a sequence of integers is called a peak,if and only if there exists exactly one integer such that and for all and for all given an integer sequence...

ZOJ 2477Magic Cube 打表模擬

感覺這道題真的是很好的一道題,我比較認可這個方法就是按照讀入順序來對顏色塊,進行編碼然後預先打表處理出每個面順逆時針旋轉之後的位置,認真一點把表打對,然後可以利用迭代加深搜尋出最小的步數。include using namespace std char readchar return ch char...