DAG優化 詳解

2021-09-29 19:26:39 字數 1014 閱讀 4942

time limit: 1000 ms memory limit: 65536 kib

大家都學過了**優化,其中有乙個dag優化,這次我們就練習這個操作。

輸入第一行為乙個整數n(n < 100),表示該組輸入的表示式的個數

之後n行為表示式,每個變數為乙個字母,表示式僅包括二元運算 + - * /

例如:a=b+c

通過構造dag圖,進行**優化,只需要保留ab,刪除無用變數,刪除變數時,盡量保留最早出現的變數。

ps:保證ab的值不同

3a=b+c

b=b+b

a=c+c

b=b+b

a=c+c

我在網上看了好多**ac這個題都是接近90多行,而且沒有注釋,看起來非常難理解,搜了很久才發現乙個不同其他寫法的博主的部落格,而且只有四十多行,但是也沒有注釋,我花了乙個多小時理解通,然後給大家加上注釋

#include

//主要是思想是,由於題目要求只保留和a,b相關的,所以與a,b相關的式子也需要儲存,

//比如a=c+d,則c=***和d=***的式子也需要儲存,

using

namespace std;

int print[

100]

;//這個陣列,裡面只儲存0或者1,是1則說明這個式子是優化後需要輸出的

char formula[

100][20

];//這個是乙個字串陣列類似於string formula;

int revelant[

300]

;//這個陣列是用來將a,b或者與a,b相關的字母的accii碼的下標,存為1,比如revelant['a']=1,等價於revelant[65]=1;

intmain()

}for

(int i=

1; i<=n; i++

)break;}

}}}for

(int i=

1;i<=n;i++

)}

真 詳解動態規劃 DAG

dag directed ayclic graph 有向無環圖 劉汝佳 dag是動態規劃的基礎,很多問題都可以轉化成dag上的最短 最長或路徑計數問題 如nyoj 16 巢狀矩形問題,描述有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a輸入 ...

矩陣巢狀(DAG)

題目 見紫書 思路都是根據紫書來的,然後重點是學習了一下利用結構體自定義矩陣的方法,這個方法確實比直接兩兩比較是否能夠巢狀優化了很多 大佬的 菜雞的 include include include using namespace std const int maxn 100 5 int depth ...

ListView優化詳解

一 為什麼需要優化?二 listview優化的核心 view的復用 getview方法中有三個引數position標識listview正繪製第幾個item。convertview相當於view控制項的快取裝置,通過layoutinflater可將item的布局檔案壓縮成乙個檢視賦值給convertv...