zoukankan      html  css  js  c++  java
  • 7624:山区建小学(划分dp)

    7624:山区建小学

    总时间限制: 

    1000ms

     

    内存限制: 

    65536kB

    描述

    政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设 0 < n < = m < 500 )。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的距离总和最小,计算最小值。

    输入

    第1行为m和n,其间用空格间隔
    第2行为(m-1) 个整数,依次表示从一端到另一端的相邻村庄的距离,整数之间以空格间隔。

    例如
    10 3
    2 4 6 5 2 4 3 1 3
    表示在10个村庄建3所学校。第1个村庄与第2个村庄距离为2,第2个村庄与第3个村庄距离为4,第3个村庄与第4个村庄距离为6,...,第9个村庄到第10个村庄的距离为3。

    输出

    各村庄到最近学校的距离之和的最小值。

    样例输入

    10 2

    3 1 3 1 1 1 1 1 3

    样例输出

    18

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    const int maxx=501;
    int c[maxx][maxx],f[maxx][maxx],d[maxx];
    int n,m;
    void first()
    {
        scanf("%d%d",&m,&n);
        for(int i=2,x;i<=m;i++)
          scanf("%d",&x),d[i]=d[i-1]+x;
    /*    memset(c,1,sizeof(c));
        memset(f,1,sizeof(f));*///代码有毒 慎用 
        for(int i=1;i<=m;i++)
           for(int j=i+1;j<=m;j++)    
               c[i][j]=10000000;
        for(int i=1;i<=m;i++)
           for(int j=i+1;j<=m;j++)
           {
             int k=(i+j)/2,t=0;
             for(int l=i;l<k;l++)
                t+=d[k]-d[l];
             for(int l=j;l>k;l--)
                t+=d[l]-d[k];
            c[i][j]=min(c[i][j],t);
           }
        for(int i=1;i<=m;i++)
            for(int j=1;j<=n;j++)
               if(j==1) f[i][j]=c[1][i];
                  else f[i][j]=10000000;
    }
    int main()
    {
        first();
        for(int i=1;i<=m;i++)
          for(int j=2;j<=n;j++)
             for(int k=0;k<i;k++)
                f[i][j]=min(f[i][j],f[k][j-1]+c[k+1][i]);
       printf("%d",f[m][n]);
        return 0;
        
    }
  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/shenben/p/5564878.html
Copyright © 2011-2022 走看看