題目大意:
給你乙個序列(長度小於等於200),你需要把它分成兩半而且兩個被分開的序列長度差不超過一(如果是偶數的話那麼就必須是一樣長咯)
要求分成的兩個序列的總和差的絕對值最小
做題思路:
1.既然是序列總和,而且分成兩半,那麼我為什麼不先預處理出一開始整個序列的和呢?
2.既然是兩個序列的總和,那麼必然會存在乙個序列的總和小於等於另外乙個序列的總和
感性理解:兩個裡面肯定有乙個大的咯
3.那麼我們不妨讓那個小的盡可能接近總和的一半?問題就轉化為了以整個序列的總和的一半為揹包容量,而且限制一定要取n/2或者n/2+1個數(對其取max)?
#include usingnamespace
std;
int n,a[350],sum=0
;int dp[8005][105
];int
main()
return0;
}
dp Luogu P1169 棋盤製作
西洋棋是世界上最古老的博弈遊戲之一,和中國的圍棋 象棋以及日本的將棋同享盛名。據說西洋棋起源於易經的思想,棋盤是乙個8 8大小的黑白相間的方陣,對應八八六十四卦,黑白對應陰陽。而我們的主人公小q,正是西洋棋的狂熱愛好者。作為乙個頂尖高手,他已不滿足於普通的棋盤與規則,於是他跟他的好朋友小w決定將棋盤...
148 合併果子
一道huffman樹問題,貪心在每一次合併堆的時候,都取最小的兩個堆合併。用乙個優先佇列 小頂堆 來存下所有堆的資料,每次取前面兩個合併就可以了。acwing282.石子合併 設有n堆石子排成一排,其編號為1,2,3,n。每堆石子有一定的質量,可以用乙個整數來描述,現在要將這n堆石子合併成為一堆。每...
基環樹上dp luoguP1453 城市環路
傳送門 quq基環樹上的dp 先dp樹再dp環,然後注意環上還要記錄一維開始那個節點有沒有選,因為最後乙個節點和第乙個也不能衝突 include include include include include include define n 100005 using namespace std i...