第一眼dp
第二眼隔板法
第三眼。。。
嗯?第二眼好像看偏了?
重新看第二眼
二維dp
所以說這道題是看兩眼就可以看出來做法的比較裸的dp題
wa了一發以後又重新看了一眼題面
嗯,要開long long
所以說這道題是看三眼就可以ac的比較裸的dp題
做完後倒回來看一眼自己的程式
嗯,只用到前面的一維
陣列可以迴圈使用
所以說這道題是看四眼就可以優化程式的比較裸的dp題
這話說出來我自己都不信
c++ 109 ms 2116 kb accepted 2017/10/24 18:28:10 80
#include
#define c (c=nc())
using
namespace
std;
long
long max[5005],f[2][5005],ans,sum;
int a[5005],m,n,cnt,line;
long
long max(long
long a,long
long b)
inline
char nc(void)
inline
void read(int &n)
int main(void)
if (cnt<=m)
printf("%lld\n",sum);
return
0; }
line=0;
for (i=1;i<=m;++i)
for (j=1;j<=n;++j)
line^=1;
}for (i=1;i<=n;++i)
printf("%lld\n",ans);
return
0;}
51Nod 1052 最大M子段和
n個整數組成的序列a 1 a 2 a 3 a n 將這n個數劃分為互不相交的m個子段,並且這m個子段的和是最大的。如果m n個數中正數的個數,那麼輸出所有正數的和。例如 2 11 4 13 5 6 2,分為2段,11 4 13一段,6一段,和為26。刷刷水有益身心健康。不過我還是沒有一眼看出來。考慮...
51Nod1052 最大M子段和
n個整數組成的序列a 1 a 2 a 3 a n 將這n個數劃分為互不相交的m個子段,並且這m個子段的和是最大的。如果m n個數中正數的個數,那麼輸出所有正數的和。例如 2 11 4 13 5 6 2,分為2段,11 4 13一段,6一段,和為26。input 第1行 2個數n和m,中間用空格分隔。...
51Nod 1052 最大M子段和
先將同符號的每一段存下來,並記錄前後段標號,將正數段總和記錄為tot 開乙個最小堆存每一段的abs值。每次從堆中取出乙個x 去掉這一段,並將左右的段與之合併再存入堆中,作為撤銷或更改操作。每次操作都會減少一段,直到段數 k就退出。include include include include def...