每日一題(14) poj1260

2021-07-25 02:10:28 字數 790 閱讀 2763

1. 一次ac

248k    0ms

2. 其實就是公式。如前面所說。只要有公式就好辦。一看感覺可以用動態規劃。dp[i] = max;關鍵是後面的動態那部分怎麼寫,也就是c[j+1,i]是怎麼算。這裡就是吧從j+1...i全部當成i層。可以想到,如果你覺得j+1...i之間還可以細分層,這麼想是對的。但是已經算過。 因為前面有個前j層最小的數dp[j].保證了上面的那種情況已經被算過。

3. 還有一點,就是自己在讀入資料的時候i的邊界寫的不是c,而是100,導致出現了很大失誤。因為所有的讀入資料都是一樣的。可能是因為已經把資料讀完,就重新讀了一遍。

4. **:

#include#include#includeusing namespace std;

int c;//不超過100

const int maxn = 105;

int dp[maxn];

int num[maxn],price[maxn];

int main()

for(int i = 0; i < maxn; i++)

//動態規劃:dp[i] = max;

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

{dp[i] = dp[i-1]+(num[i]+10)*price[i];

int amount = num[i];

for(int j = i-1 ;j>=1; j--)

{amount+=num[j];

int temp = (amount+10)*price[i]+dp[j-1];

if(temp

每日一題力扣14

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 class solution def longestcommonprefix self,strs list str str ifnot strs return count len strs 陣列的長度,即其中有多少個字串 p...

每日一題(11) poj1276

1.本來覺得很簡單,卻耗費了一天半的時間。本來做完1837之後感覺已經明白了怎麼做。但是事實彷彿並非如此。當然,這也有自己的一點執念。2.這幾天體會到,寫程式就像做數學題一樣,很忌諱一算就錯。程式也是,不能想起來覺得這樣這樣,但是寫起來沒有把握對。就像前兩天有個演講說的那樣,印度的程式很厲害,因為所...

每日一題(15) poj2533

1.直接用之前的lis 了。而且那段 求了序列出來。刪掉一部分。但是交了兩次都wa。後來發現,忘了注釋掉重定向了。2.沒啥可說,主要是公式,而且很簡單,就是dp i max.另外,不一定最後的最大。所以最後乙個迴圈找到最大的。include include includeusing namespac...