hdu1500過了,但還沒全懂

2022-08-17 23:24:21 字數 1212 閱讀 6384

這題看完感覺就是dp,然後我當然就用記憶化搜尋打了,打著打著,覺得想法不一定對,但打完交了一遍,mle,改小陣列再交,就過了,但其實還沒有完全理解透。算是混過的。

相當於dp的方法,dp[i][j]表示前i根筷子組成j組的最小值。我覺得關鍵的問題在於要先反著排序,然後如果筷子數剛好是人數的3倍時,最小的兩根必定會在同一組中,且是一組中的較小的兩根。

/*

* hdu1500/win.cpp

* created on: 2012-7-27

* author : ben */

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 5005

;const

int maxk = 1002

;const

int max = 0x7fffffff

;int

chops[maxn];

intdp[maxn][maxk];

int dfs(int i, int

j)

if(i == j * 3

) else

if(i > j * 3

)else

return

dp[i][j];

}int

main()

sort(chops, chops + n, greater());

memset(dp, -1, sizeof

(dp));

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

int ans = dfs(n, k + 8

); printf(

"%d\n

", ans);

}return0;

}

hdu1500 排序 單調佇列優化 )

從n根筷子裡面,選擇k 8個集合的筷子,每個集合三根筷子,a b c,費用是 a b 2,問最小的費用是多少。將n根筷子排序之後,可以知道a和b的下標一定是連續的。比如有 a b c d 那麼不可能是a c 乙個集合,b d乙個集合,因為這樣費用反而更大。設dp i j 為第i個集合的筷子,以j結尾...

1500 單位轉換

三師弟最近在複習考研,在複習計算機組成原理的時候,遇到了乙個問題。就是在計算機儲存裡面的單位轉換。我們都知道1mb 1024kb,1kb 1024b,1b 8bit,他在做題的時候經常會遇到格式各樣的,比如多少mb,kb,b什麼的,但是都要轉換為bit,題目做的太多他都迷茫了,現在需要你通過程式來幫...

msg1500說明書 MSG1500刷機筆記

前幾天在閒魚上看到一款路由器瑞斯康達sgm1500,網上查了一下相關配置,搞了一台。配置如下 cpu mt7621 介面 1wan 4lan,usb2.0 全千兆網口 無線 2.4g 5g 7615dn flash 128m nand 記憶體 256m 刷breed 確定breed cpu和無線晶元...