题目描述

每天,小明和他的马外出,然后他们一边跑一边玩耍。当他们结束的时候,必须带所有的马返回马棚,小明有K个马棚。他把他的马排成一排然后跟随它走向马棚,因为他们非常疲劳,小明不想让他的马做过多的移动。因此他想了一个办法:将马按照顺序放在马棚中,后面的马放的马棚的序号不会大于前面的马放的马棚的序号。而且,他不想他的K个马棚中任何一个空置,也不想任何一匹马在外面。已知共有黑、白两种马,而且它们相处得并不十分融洽。如果有i个白马和j个黑马在一个马棚中,那么这个马棚的不愉快系数将是i*j。所有k个马棚不愉快系数的和就是系数总和。确定一种方法把n匹马放入k个马棚,使得系数总和最小。

输入格式

输入:在第一行有两个数字:n(1≤n≤500)和k(1≤k≤n)。在接下来的n行是n个数。在这些行中的第i行代表队列中的第i匹马的颜色:1意味着马是黑色的,0意味着马是白色的。

输出格式

输出:只输出一个单一的数字,代表系数总和可能达到的最小值。

 
样例输入

6 3 //{6匹马,3个马棚}
1  //    {第1匹马为黑马}
1
0    //{第3匹马为白马}
1
0
1

样例输出

2

枚举分组区间进行转移。

 /*by SilverN*/
//WA 1:j每次从0开始循环,T掉一个点
// 改成从c-1开始循环以后,904ms卡过
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int w[mxn],b[mxn];
int f[mxn][mxn];
int n,k;
int main(){
memset(f,0x2f,sizeof f);
int i,j;
n=read();k=read();
int x;
for(i=;i<=n;i++){
x=read();
if(x)b[i]++;
else w[i]++;
b[i]+=b[i-];
w[i]+=w[i-];
}
f[][]=;
for(int c=;c<=k;++c){
for(i=c;i<=n;++i){
for(j=c-;j<i;++j){
f[i][c]=min(f[i][c],f[j][c-]+(b[i]-b[j])*(w[i]-w[j]));
}
}
}
printf("%d\n",f[n][k]);
return ;
}

RQNOJ273 马棚问题的更多相关文章

  1. 【解题报告】[动态规划] RQNOJ - PID273 / 马棚问题

    原题地址:http://www.rqnoj.cn/problem/273 题目大意:中文题不说了. 设从第i匹马到第j-1匹马放在一个马棚里得到的系数为f(i,j). 状态表示:dp[i][j]表示前 ...

  2. codevs 1962 马棚问题--序列型DP

    1962 马棚问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 每天,小明和他的马外出,然后他们一边跑一边玩耍.当他们结束 ...

  3. RQN 273 马棚问题 dp

    PID273 / 马棚问题  2016-07-29 18:21:55 运行耗时:1624 ms 运行内存:16248 KB 题目描述 每天,小明和他的马外出,然后他们一边跑一边玩耍.当他们结束的时候, ...

  4. 递推DP URAL 1167 Bicolored Horses

    题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...

  5. merry Christmas

    圣诞节的来历 圣诞节这个名称是基督弥撒的缩写. 弥撒是教会的一种礼拜仪式. 1.耶诞节是一个宗节,我们把它当作耶苏的诞辰来庆祝,因而又名耶诞节.这一天,世界所有的基督教会都举行特别的礼拜仪式.但是有很 ...

  6. DP 动态规划

    p1269 马棚 题目: 每天,小明和他的马外出,然后他们一边跑一边玩耍.当他们结束的时候,必须带所有的马返回马棚,小明有K个马棚.他把他的马排成一排然后跟随它走向马棚,因为他们非常疲劳,小明不想让他 ...

  7. python田忌赛马

    一,简介 田忌赛马的故事大家都知道我就不展开说了,田忌能用同全面被碾压的马赢了齐威王(公子),我觉得这是十分具有智慧的.但是,如果说这里的条件改为:1,田忌的马比齐威王同等次的马弱一点但是比齐威王下一 ...

  8. stable

    stable - 必应词典 美['steɪb(ə)l]英['steɪb(ə)l] n.马厩:马房:(养马作特定用途的)养马场 adj.稳定的:稳固的:牢固的:稳重的 v.使(马)入厩:把(马)拴在马厩 ...

随机推荐

  1. 10.JAVA-接口、工厂模式、代理模式、详解

    1.接口定义 接口属于一个特殊的类,这个类里面只能有抽象方法和全局常量  (该概念在JDK1.8之后被打破,在1.8后接口中还可以定义普通方法和静态方法,在后续章节会详讲) 1.1 接口具有以下几个原 ...

  2. re正则表达式公式讲解5

    1.refullmatch() 完全匹配字符串则返回object,否则返回None import re s = "max@123uyt146" print(re.fullmatch ...

  3. DDR SDRAM

    DDR SDRAM(Double Data Rate SDRAM)是一种高速CMOS.动态随机访问存储器, 它采用双倍数据速率结构来完成高速操作.应用在高速信号处理系统中, 需要缓存高速.大量的数据的 ...

  4. ubuntu下安装memcache及memcached

    memcache 和 memcached 有什么区别呢? memcache最早是在2004年2月开发的,而memcached最早是在2009年1月开发的.所以memcache的历史比memcached ...

  5. Java遍历HashMap并修改(remove)

    遍历HashMap的方法有多种,比如通过获取map的keySet, entrySet, iterator之后,都可以实现遍历,然而如果在遍历过程中对map进行读取之外的操作则需要注意使用的遍历方式和操 ...

  6. execl, execlp, execle, execv, execvp - 执行某个文件

    总览 (SYNOPSIS) #include <unistd.h> extern char **environ; int execl( const char *path, const ch ...

  7. django URL,views,html请求顺序

    进来的请求转入/hello/.   Django通过在ROOT_URLCONF配置来决定根URLconf.     Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目 ...

  8. 【牛客小白月赛6】F 发电 - 树状数组&快速幂&逆元

    题目地址:https://www.nowcoder.com/acm/contest/136/F 树状数组.快速幂.逆元的模板运用: #include<iostream> #include& ...

  9. CF666E Forensic Examination SAM+倍增,线段树和并

    题面: 给你一个串S以及一个字符串数组T[1..m],q次询问,每次问S的子串S[p_l..p_r]在T[l..r]中的哪个串里的出现次数最多,并输出出现次数.如有多解输出最靠前的那一个. 分析: 第 ...

  10. Linux下安装Redis5.0.2

    1.下载redis 地址 http://download.redis.io/releases/redis-5.0.2.tar.gz 2.解压tar -zxf redis-5.0.2.tar.gz 3. ...