ZZULI 建國的簽到活動二 DFS

2021-09-08 03:06:44 字數 1045 閱讀 2675

時間限制: 1 sec  記憶體限制: 128 mb

建國發現在某寶上即將開始第二波簽到活動,這次簽到活動會進行n天。這次活動的積分計算方法和上一次活動一樣,積分是根據你連續簽到的第一天和最後一天計算的。主辦方會給你乙個積分表,表中會給出所有的a[i][j](a[i][j]表示第i天到第j天全都簽過到,且第i-1天與第j+1天沒有簽到時你可以得到的積分,若不滿足所有條件則無法獲得該積分)。建國吸取了上一次活動的經驗,決定先計畫一下自己哪天簽到,哪天不簽,以便得到更多的積分,你能幫建國計算出他最多可以得到的積分嗎?

第一行輸入乙個正整數n,表示活動的天數。(1 <= n <= 15)

接下來輸入n行n列整數,第i行j列表示a[i][j]。(當i>j時,a[i][j]沒有實際意義,用-1來表示無意義。當i<=j時,1 <= a[i][j] <= 1000)

輸出建國最多可以得到的總積分和可以得到最多積分的方案數,兩個整數之間用空格間隔。

5

5 4 3 2 1

-1 4 3 2 1 

-1 -1 3 2 1

-1 -1 -1 2 1

-1 -1 -1 -1 1

9 1

對於樣例,第1,3,5天簽到時,可以最多得到9積分。只有這一種方案可以得到最多的9積分。

因為每一天只有兩種情況,要麼簽到,要麼不簽,故只要dfs跑一遍就行了。

#include int n, maxn, temp, s[20][20];

void dfs(int x, int l, int ans)

else if (ans == maxn)

temp++;

return ;

}dfs(x + 1, l, ans);

dfs(x + 1, x + 1, ans + (l < x ? s[l][x - 1] : 0));

}int main()

return 0;

}

建國的簽到活動一

題目描述 建國發現在某寶上發現了乙個簽到活動,這個簽到活動進行了n天,不過這個活動的積分計算方法很特殊,積分是根據你連續簽到的第一天和最後一天計算的。主辦 方會給你乙個積分表,表中會給出所有的a i j a i j 表示第i天到第j天全都簽過到,且第i 1天與第j 1天沒有簽到時你可以得到的積 分,...

zzuli1210 東東的女朋友(二)(水)

我們已經知道了,東東有很多的女朋友。每個女朋友都要東東陪她們,但是現在東東的女朋們每天也都需要上課,所以不可能一整天都有時間。現在的問題是,給出東東女朋友每一天的空閒時間,問東東最少用多少天可以陪每個女朋友至少一次。因為東東還要留很多時間來學習演算法呢。當然當東東在陪乙個女朋友時間段內不可以同時去陪...

zzuli 第二次新生賽 2663 最大的差

題目鏈結 n 1e5 直接用分塊優化,時間複雜度o n 3 2 不過正解是o n 的演算法,分塊達到1e6的資料就不太方便了。include using namespace std define lowbit x x x typedef long long ll const int maxn 1e6...