[多校2015.02.1004 dp] hdu 5303 Delicious Apples

來源:互聯網
上載者:User

標籤:sort   turn   stream   map   int   class   題意   code   tor   

題意:

在一個長度為L的環上有N棵蘋果樹。你的籃子容量是K個蘋果。

每棵蘋果樹上都有a[i]個蘋果。

問你從0點出發最少要走多少距離能拿完所有的蘋果。

思路:

我們考慮dp,dp[0][i]代表順時針取i個蘋果的最短距離。

dp[1][i]代表逆時針取i個蘋果的最短距離。

那麼設蘋果的總是為sum

那麼ans=dp[0][i]+dp[sum-i]  (0<=i<=sum)

代碼:

#include"stdio.h"#include"algorithm"#include"string.h"#include"iostream"#include"queue"#include"map"#include"vector"#include"string"#include"cmath"using namespace std;#define ll __int64ll l;struct node{    int x,s;} ap[123456];ll dp[2][123456];int cmp(node a,node b){    return a.x<b.x;}int main(){    int t;    cin>>t;    while(t--)    {        int n,k;        scanf("%I64d%d%d",&l,&n,&k);        for(int i=0; i<n; i++) scanf("%d%d",&ap[i].x,&ap[i].s);        memset(dp,0,sizeof(dp));        sort(ap,ap+n,cmp);        int tep=1,sum=0;       //tep代表取了幾個蘋果  由於一定是遞增的        for(int i=0; i<n; i++)        {            for(int j=0; j<ap[i].s; j++)            {                if(tep-k<0) dp[0][tep]=dp[0][0]+min(l,2LL*ap[i].x);                else dp[0][tep]=dp[0][tep-k]+min(l,2LL*ap[i].x);                tep++;            }        }        tep=1;        for(int i=n-1; i>=0; i--)        {            sum+=ap[i].s;            for(int j=0; j<ap[i].s; j++)            {                if(tep-k<0) dp[1][tep]=dp[1][0]+min(l,2LL*(l-ap[i].x));                else dp[1][tep]=dp[1][tep-k]+min(l,2LL*(l-ap[i].x));                tep++;            }        }        ll ans=999999999999999999LL;        for(int i=0;i<=sum;i++) ans=min(ans,dp[0][i]+dp[1][sum-i]);        printf("%I64d\n",ans);    }    return 0;}


[多校2015.02.1004 dp] hdu 5303 Delicious Apples

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.