時間限制: 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)
輸出建國最多可以得到的總積分和可以得到最多積分的方案數,兩個整數之間用空格間隔。
55 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...