効果の対象に
すべての約数の数は(自身を除く)するように、いくつかの異なる正の整数、最大合計より多くのSを選択していません。
分析
私たちは、その後、我々はディおならを開始している可能性があり、未知の配列があり、合併の要因を破ります!!(袋)、我々はできます
バックパック01にそれを置きます:
F [J] = MAX([J]、F [J-1] +和F [I])。
そう:
コード
1の#include <cstdioを> 2の#include <iostreamの> 3 使用して 名前空間STDを、 4 5 int型の F [ 1001000 ]。 6つの int型のANS; 7 INT N。 8 INTの和[ 1001000 ]。 9 INT メイン(){ 10 freopenは(" maxsum.in "、" R " 、STDIN)。 11 freopenは(" maxsum.out "、" W " 、STDOUT)。 12 cinを>> N; 13 のために(int型 i = 1 ; iが<= N / 2、iが++ ){ 14 のために(INT J =私は* 2、J <= N; J + = I){ 15 和[J] + = I。 16 } 17 } 18 のための(int型 i = 1 ; iは<N =、iは++ ){ 19 のために(INT J = N; J> = 1 ; j-- ){ 20 であれば(j> = I) 21 F [J ] = MAX(F [J]、F [JI] +和[I])。 22 年= MAX([J] F年)。 23 } 24 } 25 COUT << 年。 26 }
洪水