From 928583813994a2ef3255b3162c7fcb13485f5e1b Mon Sep 17 00:00:00 2001 From: Kirito <1362050620@qq.com> Date: Tue, 6 Sep 2016 14:35:20 +0800 Subject: [PATCH] Create 1685.cpp --- UESTC/1685.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 UESTC/1685.cpp diff --git a/UESTC/1685.cpp b/UESTC/1685.cpp new file mode 100644 index 0000000..9310c91 --- /dev/null +++ b/UESTC/1685.cpp @@ -0,0 +1,71 @@ +#include +#include +#include +#include +using namespace std; + +#define MAXN 50100 +#define MAXH 110 +#define MAXVAL_H 100 +#define INF 0x3f3f3f3f + +int dp[2][MAXH]; +int bus[MAXH]; + +int main() +{ + int N,C; + while(scanf("%d %d",&N,&C)==2) + { + /// Main Loop + int x; + scanf("%d",&x); + int index=0; + ///由于人无法变矮,因此这部分的花费记为INF + for(int i=0;i 大(N) + for(int k=0;k<=MAXVAL_H;k++) + { + int cost=dp[!index][k]-k*C; + /// Pop Back + while(begin cost) end--; + /// Push Back + bus[end++]=cost; + if(k=0;k--) + { + int cost=dp[!index][k]+k*C; + /// Pop Back + while(begin cost) end--; + /// Push Back + bus[end++]=cost; + if(k>=x) + { + dp[index][k]=min(dp[index][k],bus[begin]-k*C+(k-x)*(k-x)); + } + } + } + int ans=INF; + for(int i=0;i<=MAXVAL_H;i++) + { + ans=min(dp[index][i],ans); + } + printf("%d\n",ans); + } + return 0; +}