對於乙個序列 a1 a2 ... an 我們可以計算出乙個符號矩陣a, 其中si,j 為 a1+...+aj 的正負號,(連加和大於0則sij=+ 小於0 sij=- 等於0 則sij=0), 根據序列a不難算出上述符號矩陣。你的任務是求解它的「逆問題」 , 及給出乙個符號矩陣,找出乙個對應的序列。輸入保證存在乙個滿足條件的序列,其中每個整數的絕對值均不超過10
解 連續和轉化為字首和之差,設bi=a1+...+ai 規定b0=0 則矩陣中的任意一項都等價於連個bi 相減之後的正負號,例如 , 第x行y列的符號為正號 ax+...+ay>0 by-bx-1>0, 轉化為已知b0,b1,...,bn,的一些大小關係,求他們的值,這個問題通過拓撲排序完成。
#include #includeview code#include
#include
#include
using
namespace
std;
const
int inf=50
;char str[150
];vector
same[15
];vector
to[15
];int dgreed[15
];int g[15
];bool use[15
];int ans[15
];void solve(int loc, int
v)int
main()
else
if(str[loc]=='+'
)else
loc++;
}for(int i=0; i1;++i)
g[i]=k; use[k]=true
;
for(int j=0; jj)
}loc=0
;
for(int i=0; i1; ++i)
if(g[i]==0
) ans[
0]=0
;
int v=-1
; solve(
0,0);
for(int i=loc-1; i>=0; --i)
solve(g[i],ans[g[i]]);
}v=1
;
for(int i=loc+1; i<=n; ++i)
solve(g[i],ans[g[i]]);
}for(int i=1; i<=n ;++i)
printf(
"%d%c
",ans[i]-ans[i-1],i==n?'
\n':'');
}return0;
}
142 猴子報數
猴子報數 n個猴子圍坐一圈並按照順時針方向從1到n編號,從第s個猴子開始進行1到m的報數,報數到第m的猴子退出報數,從緊挨它的下乙個猴子重新開始1到m的報數,如此進行下去知道所有的猴子都退出為止。求給出這n個猴子的退出的順序表。輸入有做組測試資料 每一組資料有兩行,第一行輸入n 表示猴子的總數最多為...
演算法導論14 2
本小節介紹了擴充套件資料結構的抽象過程,同時證明了乙個定理 選擇一種基礎資料結構 確定基礎資料結構中要維護的附加資訊 檢驗基礎資料結構上的基本修改操作能否維護附加資訊 設計一些新的操作來應用附加資訊 設 f 是 n 個節點的紅黑樹 t 擴張的屬性,且假設對任一節點 x f 的值僅依賴於節點 x,x....
142 字首統計 AcWing
原題鏈結 trie的基本運用 錯誤思路 將要查詢字首的字串構建字典樹,這樣的結果是每個字串都要重新構建一次樹,並且我們需要預先儲存要匹配字首的單詞,但題目單詞數目沒有講明,所以我們必須將建樹的字串互換.這樣建樹會導致mle 正解思路 將字首建樹,如果達到乙個結點有單詞就 1,如果沒有單詞就跳出 易錯...