程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> FZU2168 防守陣地 I

FZU2168 防守陣地 I

日期:2017/1/21 14:35:57      編輯:C++入門知識

Accept: 20 Submit: 29
Time Limit: 3000 mSec Memory Limit : 32768 KB

\ Problem Description

部隊中共有N個士兵,每個士兵有各自的能力指數Xi,在一次演練中,指揮部確定了M個需要防守的地點,按重要程度從低到高排序,依次以數字1到M標注每個地點的重要程度,指揮部將選擇M個士兵依次進入指定地點進行防守任務,能力指數為X的士兵防守重要程度為Y的地點將得到X*Y的參考指數。現在士兵們排成一排,請你選擇出連續的M個士兵依次參加防守,使得總的參考指數值最大。

\ Input

輸入包含多組數據。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+yuTI67Xa0rvQ0NPQwb249tX7yv1OLE0oMTw9Tjw9MTAwMDAwMKOsMTw9TTw9MTAwMCkstdq2/tDQTrj21fvK/bHtyr7Dv7j2yr+x+LbU06a1xMTcwabWuMr9WGmjqDE8PVhpPD0xMDAwo6mhozwvcD4KPHA+ttTT2jMwJbXEyv2+3TE8PU08PU48PTEwMDChozwvcD4KCjxoMj48aW1nIHNyYz0="http://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012114355784.gif" alt="\"> Output

輸出一個整數,為最大的參考指數總和。

\ Sample Input

5 32 1 3 1 4

\ Sample Output

17
#include
 int ans[1000005],dp[1000005],a[1000005],n,m,max;
int main()
{
    int k;
    while(scanf("%d%d",&n,&m)>0)
    {
        max=0; k=0; ans[0]=0; dp[0]=0;
        for(int i=1; i<=n;i++)
        {
            scanf("%d",&a[i]);
           if(i<=m)
           {
               ans[k]+=a[i]; dp[k]+=i*a[i]; max=dp[k];
           }
           else
           {
               k++; ans[k]=ans[k-1]-a[i-m]+a[i];
               dp[k]=dp[k-1]-ans[k-1]+a[i]*m;
               if(max

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved