双色马

题目:http://www.razxhoi.com/mod/programming/view.php?id=5419
【题目描述】双色马(Binhorse.cpp/c/pas)URAL 1167

邪狼负责管理所有的战马,每天,他放出所有战马,任它们奔跑嬉戏。到了晚上,邪狼把所有马带回马厩,邪狼把它们排在一条直线上然后跟着他回厩。由于马儿们很累,邪狼尽量不让它们移动。所以他发明了一个算法:他把前P1匹马放在第一个马厩,下面P2只马放在第二个马厩,等等,而且,他不想K个马厩任何一个是空的,并且没有马被留在外边。邪狼有黑白两种颜色的马,两种颜色的马相处不好。如果有i匹黑马和j匹白马同在一个马厩中,那么这个马厩的忧愁系数为i×j。总忧愁系数是所有马厩忧愁系数的和。恢愁系数过大会表现在马儿互相打架或者马儿彻夜长嘶,这会引起修罗王的不满,邪狼可能要被惩罚,后果您也可以想象出来,很严重的!故请决定一种方法把N匹马放进K个马厩使得总忧愁系数最小。

【输入格式】
第一行是N(1≤N≤500)和K(1≤K≤N),下面N行有N个数第i行是第i只马的颜色,1代表黑色,0代表白色。

【输出格式】
最小的总忧愁系数。

【输入样例】
6 3
1
1
0
1
0
1
【输出样例】
2

【样例说明】
将前2匹马放在第一个马厩,下面3匹马放在第二个马厩,最后一匹马放在第三个马厩。

【时间限制】
1秒

【内存限制】
16MB

题解:这是一道经典的动态规划问题,我们可以用dp[i][l]来表示前i匹马放进l个马厩,由于只有两种马,可以用sum[i]表示前i匹马有多少匹黑色的,白色的就是i-sum[i]个,j表示从l-1到i-1中马的摆放位置,则zhea转移方程dp[i][l]=min(dp[i][l],dp[j][l-1]+(j+1到i的黑马数*j+1到i的白马数)。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n,k,a[505],sum[505],dp[505][505],b[505][505];
int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    freopen("Binhorse.in","r",stdin);
    freopen("Binhorse.out","w",stdout);
    int i,j,l;
    cin>>n>>k;
    memset(dp,127/3,sizeof(dp));
    for(i=1; i<=n; i++)
    {
        cin>>a[i];
        sum[i]=sum[i-1]+a[i];//一个时手动求
        dp[i][1]=sum[i]*(i-sum[i]);
    }

    for(l=2; l<=k; l++)
    {
        for(i=l; i<=n; i++)
        {
            for(j=l-1; j<i; j++)
            {
                dp[i][l]=min(dp[i][l],dp[j][l-1]+(sum[i]-sum[j])*(i-j-sum[i]+sum[j]));//白马数为j+1到i的个数-黑马数。
            }
        }
    }
    cout<<dp[n][k]<<endl;
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务