猜到複雜度……卻依然不會做……
這個方法感覺和不等式證明中的放縮法有點類似,所以我個人這樣稱呼……
先把c
ic_i
ci乘進去,把式子寫出來:∑i=
1k−1
∣ai−
bi∣−
∣ak−
bk
∣\sum_^|a_i-b_i|-|a_k-b_k|
i=1∑k−
1∣a
i−b
i∣−
∣ak
−bk
∣絕對值很煩,考慮怎麼去掉它,我們可以直接2k−
12^
2k−1
列舉前k−1
k-1k−
1個絕對值符號中的正負,然後按最後乙個值排序,直接求解,也就是把式子變成這樣:∑i=
1k−1
±(ai
−bi)
−(ak
−bk)
\sum_^\pm(a_i-b_i)-(a_k-b_k)
i=1∑k−
1±(
ai−
bi)
−(ak
−bk
)因為最優解一定是使得前面的k−1
k-1k−
1項全部取到正,所以這樣也能求出最大值。
#include
using
namespace std;
#define ll long long
#define pa pair
const
int maxn=
100010
;const
int inf=
2147483647
;int
read()
while
(ch>=
'0'&&ch<=
'9')x=
(x<<3)
+(x<<1)
+(ch^48)
,ch=
getchar()
;return x*f;
}int n,k,c[6]
,b[6];
struct pp[maxn]
;bool
cmp(p a,p b)
intmain()
*/for
(int s=
0;s<(1
<<
(k-1))
;s++)}
printf
("%lld"
,ans)
;}
友好的生物
問題描述 w 星球是乙個和地球一樣氣候適宜 物種聚集的星球。經過多年的研究,外星生物學 家們已經發現了數萬種生物,而且這個數字還在不斷增大。w 星球上的生物很有趣,有些生物之間很友好,朝夕相伴,形影不離 但有些卻很敵 對,一見面就難免發生戰鬥。為了能夠更好地了解它們之間的友好程度,外星生物學家希望 ...
友好的生物(狀壓dp)
傳送門 戳還有集訓隊寫的的題解 大概思路 1.把c j 乘入屬性中。乘完後求的即是 2.對於前k 1個屬性和第k個屬性分別討論,即 3.列舉符號串行,最優的情況一定包含在之內 4.把生物按照第k個屬性的大小排序,保證了後面的數第k種屬性大於前面的,這樣減出來第k個屬性的差值一定是負值,滿足條件。in...
WC2005 友好的生物
這題算是毒瘤吧,看到這個題我除了o n 2 想不到別的方法 後來嘗試使用平方的方式亂搞,但是給出了反例 在看了國家集訓隊ysy的解題報告後方才明白 思路是一種放寬的思路 我們列舉每個差值的符號,在其中列舉最大值,就可以有效去除絕對值 最後按照第k位從小到大排序,來列舉 從小到大進行掃瞄,每次用當前的...