【輸出】
輸出包含n行,每行為乙個整數「0」或「1」,「1」表示第i號選手有可能成為冠軍,「0」表示不可能。
【輸入輸出樣例1】
data.in
3 0 1 1
0 0 1
0 0 0
data.out
1 0
0區間dp嘛,狀態轉移也好想,設 f[ i ][ j ][ k ]表示第 i 個人到第 j 個人打完時第 k 個人能不能活著。所以:列舉中間節點 l ,對於每個 f[ i ][ l ]中可以打贏的那位 x,都和每個 f[ l+1 ][ j ]中可以打贏的那位 y 決一死戰,f[ i ][ j ][ winner ]=1。
比較麻煩、比較坑我的地方就是斷環為鏈的操作。見code吧。
但我程式跑得很慢,五重迴圈,林神好像有很玄學的做法。
先丟個題解鏈結,日後再看:
int n;
int f[100][100][100];
int res[100][100];
int ans[100];
void init()
void work_dp()
}for(int j=1;j<=n;++j)
for(int i=1;i<=n;++i)
ans[i]|=f[j][j+n-1][i]; //貫徹中心思想,原本還|f[j][j+n-1][i+n]來著,刪了也能過,仔細想想是一樣的嘛。
for(int i=1;i<=n;++i) printf("%d\n",ans[i]);
}
碰到環的,呃,多筆算一下吧。…… 2014東莞市選 分組
file io input group.in output group.out time limits 1000 ms memory limits 262144 kb detailed limits special judge description 有n個字串,給這些字串分組,使得每個字串屬於且僅...
東莞市選2008 飛彈
這題的n很小。我們可以先用floyd求出兩兩之間的最小距離。然後要求最值,我們可以二分最長的距離。然後用匈牙利來判斷。將小於等於mid的邊新增 上標 include include include using namespace std struct nodee 10010 int k,n,m,f ...
2023年東莞市GDOI市選題第一題
第一題 數列 提交檔案 sequence.pas c cpp 輸入檔案 sequence.in 輸出檔案 sequence.out 問題描述 把乙個正整數分成一列連續的正整數之和。這個數列必須包含至少兩個正整數。你需要求出這個數列的最小長度。如果這個數列不存在則輸出 1。輸入格式 每行包含乙個正整數...