hdu-3092
(1)題意:
將乙個數分為若干個數字x1……xn,得到這若干個數字的最小公倍數lcm,
求lcm的最大值%m。
(2)思路:
讓lcm最大,就是盡可能的讓x1……xn這些數字互質,所以先篩出素數(範圍1~3000),然後將這些素數
視為物品,有乙個揹包的容積為n,就是完全揹包了。
但是考慮n=7的情況,7 = 3+4,lcm(3,4) = 12.
4不是素數,但4時2的平方,所以,物品並不僅是所有的素數,還可能是素數的平方,所以還要遍歷每個素數的k次方的值
(這裡由於素數之間是互質的,所以素數的k次方之間也一定是互質的。)
(3)注意:
這裡的結果對m取模,所以不能直接比較ans的大小,可以用log函式將乘法變為加法,
再設定乙個dp陣列,儲存可以比較的值,ans陣列記錄結果。
(4)**實現:
參考文章
#include#include#include#includeusing namespace std;
const int maxn = 1e5+10;
int tot,ans[maxn],prim[maxn],vis[maxn];
double dp[maxn];
void init()
}} printf("%d\n",ans[n]); }
return 0;
}
HDU 6069 素數篩法
思路 設 n p 1 p 2 p m n p 1 c 1 p 2 c 2 p m c m 則d n k kc 1 1 kc 2 1 kc m 1 d n c 1 1 c2 1 c m 1 則 d n k kc 1 1 kc 2 1 kc m 1 d n k kc 1 1 kc 2 1 k c m 1...
完全揹包 HDU 1114
今天看了看揹包九講的完全揹包。估計是因為只記住了方程,沒理解透的原因。照著寫,還是錯了 錯就錯在初始化的時候,我全部初始化為0了,然後用max 但是得不到答案。可是初始化出0位置以外,其他都為無窮大,取min,過了 額。去問問高手吧我。再研究了下,猛然回頭,發現,是求揹包裝滿的 最小價值 inclu...
hdu 1203(完全揹包)
problem description speakless很早就想出國,現在他已經考完了所有需要的考試,準備了所有要準備的材料,於是,便需要去申請學校了。要申請國外的任何大學,你都要交納一定的申請費用,這可是很驚人的。speakless沒有多少錢,總共只攢了n萬美元。他將在m個學校中選擇若干的 當然...