RQNOJ 题目273 马棚问题(DP)
来源:互联网 发布:excel如何将数据分列 编辑:程序博客网 时间:2024/05/10 13:24
题目描述
每天,小明和他的马外出,然后他们一边跑一边玩耍。当他们结束的时候,必须带所有的马返回马棚,小明有K个马棚。他把他的马排成一排然后跟随它走向马棚,因为他们非常疲劳,小明不想让他的马做过多的移动。因此他想了一个办法:将马按照顺序放在马棚中,后面的马放的马棚的序号不会大于前面的马放的马棚的序号。而且,他不想他的K个马棚中任何一个空置,也不想任何一匹马在外面。已知共有黑、白两种马,而且它们相处得并不十分融洽。如果有i个白马和j个黑马在一个马棚中,那么这个马棚的不愉快系数将是i*j。所有k个马棚不愉快系数的和就是系数总和。确定一种方法把n匹马放入k个马棚,使得系数总和最小。
输入格式
输入:在第一行有两个数字:n(1≤n≤500)和k(1≤k≤n)。在接下来的n行是n个数。在这些行中的第i行代表队列中的第i匹马的颜色:1意味着马是黑色的,0意味着马是白色的。
输出格式
输出:只输出一个单一的数字,代表系数总和可能达到的最小值。
样例输入
样例输出
提交题目 C++ Language
ac代码
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;#define INF 0x3f3f3f3fint dp[505][505];int b[505],w[505];/*int fun(int x,int y){return (b[y]-b[x])*(w[y]-w[x]);}*/int main(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){//for()b[0]=w[0]=0;int i,j,k;for(i=0;i<=n;i++)for(j=0;j<=m;j++)dp[i][j]=INF;dp[0][0]=0;for(i=1;i<=n;i++){int x;scanf("%d",&x);if(x){b[i]=b[i-1]+1;w[i]=w[i-1];}else{w[i]=w[i-1]+1;b[i]=b[i-1];}dp[i][1]=b[i]*w[i];}for(j=2;j<=m;j++){for(i=j;i<=n;i++){for(k=j-1;k<=i-1;k++){int temp1,temp2;temp1=b[i]-b[k];temp2=w[i]-w[k];dp[i][j]=min(dp[i][j],dp[k][j-1]+temp1*temp2);}}}printf("%d\n",dp[n][m]);}}
0 0
- RQNOJ 题目273 马棚问题(DP)
- rqnoj-273-马棚问题-dp
- RQNOJ 273 马棚问题
- RQNOJ PID273 马棚问题
- 【动态规划】【RQNOJ】马棚问题
- zstu2552---马棚问题 DP
- 马棚问题
- rqnoj-105-核电站问题-dp
- 【codevs1962】马棚问题
- zstu 2552 马棚问题
- RQNOJ 172 圣诞树(dp)
- RQNOJ 204 特种部队(dp)
- RQNOJ-252-公司聚会(线性dp)
- [DP][RQNOJ 3822]选择题
- 【RQNOJ PID87】【DP】过河
- [RQNOJ 696] 【树形DP】
- Rqnoj 题目 72拔河比赛 (01背包)
- rqnoj 496 [IOI1999]花店橱窗布置 (简单dp)
- 原来指针可以这么来理解,妈妈再也不用担心我的编程了
- 2015年9月14日- 2015年9月20日-工作周报
- MMD_1a_MapReduce
- 【ecmall】解决无法上传店铺logo和banner照片问题(二)
- 业界编译器Clang介绍
- RQNOJ 题目273 马棚问题(DP)
- 树懒-大话设计模式修炼笔记
- 理解javascript闭包和C++闭包
- prepare 预编译SQL:Mysql
- 黑马程序员——多线程
- 基于MapReduce的连接查询算法
- testlink和mantis集成
- 单链表反转/逆序的两种方法
- 数据库(增、删、改、查)