藍橋杯 演算法提高 求最大值

2021-08-20 02:18:08 字數 1945 閱讀 1112

演算法提高 求最大值  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

給n個有序整數對ai bi,你需要選擇一些整數對 使得所有你選定的數的ai+bi的和最大。並且要求你選定的數對的ai之和非負,bi之和非負。

輸入格式

輸入的第一行為n,數對的個數

以下n行每行兩個整數 ai bi

輸出格式

輸出你選定的數對的ai+bi之和

樣例輸入 5

-403 -625

-847 901

-624 -708

-293 413

886 709

樣例輸出

1715

資料規模和約定

1<=n<=100

-1000<=ai,bi<=1000

一開始感覺挺不可置信的竟然用動態規劃,我以為是乙個很簡單的水題呢,結果卻饒了好久

先說一下這個題目:

對於每乙個數對,選與不選然後求最大值, 這樣來說,萬能的dfs就可以拿來用了!!!

66分**:(這種來說超時是很顯然的,,迫不得己的話就用, 然後盡可能去剪枝騙分)

#include #include #include #include #include using namespace std;

const int n = 105;

int a[n];

int b[n];

int ans;

void dfs(int k, int len, int sum_a, int sum_b)

return ;

} dfs(k+1, len, sum_a, sum_b);

dfs(k+1, len, sum_a+a[k], sum_b+b[k]);

return ;

}int main()

else if(x >= 0 || y >= 0)

}dfs(0, len, sum_a, sum_b);

printf("%d", ans);

return 0;

}

但對於這個題的動態規劃的解法,其實感覺這個題目的感覺更像一種對dfs用空間換時間的做法,dp陣列n*2t的空間,只儲存1+2+3+...+n是有效資料組,其餘全是-inf;

而其中的n個有效資料組是對其直接賦值的,更多的不是一種最優,而是用資料求對應。

1,如何想到利用動態規劃呢:

對於每個數對,選擇與不選擇的問題正好與01揹包的問題相對應,同時有限制條件。

2,如何與套用動態規劃的方法:

dp[i][j]:i表示1-n, j表示限制條件,但此處限制條件有兩個變數,就可以用其中乙個sum_a(sum_a範圍是[-t,t],所有要使範圍增加t,另乙個不限制(最後篩選)。

然後根據實際dp應有的值推送遞推公式。

與常用01揹包的不同之處,,這裡sum_a只對應沒幾個值,只對應部分數的和,而01揹包是很多值,因為包容量可以有空餘

#include #include #include #include #include using namespace std;

const int n = 105;

const int t = 100000;

int aa[n];

int bb[n];

int dp[n][2*t+5];

int main()

for(int i = 0; i < cnt; i++) }

for(int i = 1 ; i < cnt; i++)

for(int i = 1; i < cnt; i++) }

int ans = 0;

for(int j = t; j <= 2*t; j++)

printf("%d\n", ans);

return 0;

}

藍橋杯 演算法提高 求最大值

演算法提高 求最大值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給n個有序整數對ai bi,你需要選擇一些整數對 使得所有你選定的數的ai bi的和最大。並且要求你選定的數對的ai之和非負,bi之和非負。輸入格式 輸入的第一行為n,數對的個數 以下n行每行兩個整數 ai bi 輸出格...

藍橋杯 演算法提高 求最大值

題意 給n個有序整數對ai bi,你需要選擇一些整數對 使得所有你選定的數的ai bi的和最大。並且要求你選定的數對的ai之和非負,bi之和非負。輸入格式 輸入的第一行為n,數對的個數 以下n行每行兩個整數 ai bi 輸出格式 輸出你選定的數對的ai bi之和 樣例輸入 5 403 625 847...

演算法提高 求最大值

演算法提高 求最大值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給n個有序整數對ai bi,你需要選擇一些整數對 使得所有你選定的數的ai bi的和最大。並且要求你選定的數對的ai之和非負,bi之和非負。輸入格式 輸入的第一行為n,數對的個數 以下n行每行兩個整數 ai bi 輸出格...