HDU 3687 暴力
来源:互联网 发布:mac口红brave red试色 编辑:程序博客网 时间:2024/05/30 05:00
在N*M的矩阵里,分布了,N*N个人,每行N个,且只能左右移动,求把所有人合并成N*N正方形所需的最小代价。
因为每个人只能在本行移动,所以预处理出来每行的每种合并方式,再判断列的
#include "stdio.h"#include "string.h"#include "iostream"#include "algorithm"using namespace std;int inf=0x3f3f3f3f;int Fabs(int a){ if (a<0) return -a; else return a;}int Min(int a,int b){ if (a<b) return a; else return b;}struct node{ int num; int x[210];}mark[210];int main(){ int n,m,i,j,k,sum,ans; int dp[210][210]; while (scanf("%d%d",&n,&m)!=EOF) { if (n==0 && m==0) break; memset(mark,0,sizeof(mark)); for (i=1;i<=n*n;i++) { scanf("%d%d",&j,&k); mark[j].num++; mark[j].x[mark[j].num]=k; } for (i=1;i<=n;i++) sort(mark[i].x+1,mark[i].x+1+n); memset(dp,0,sizeof(dp)); for (i=1;i<=n;i++) for (j=1;j<=m-n+1;j++) for (k=1;k<=n;k++) dp[i][j]+=Fabs(mark[i].x[k]-j-k+1); ans=inf; for (j=1;j<=m-n+1;j++) { sum=0; for (i=1;i<=n;i++) sum+=dp[i][j]; ans=Min(sum,ans); } printf("%d\n",ans); } return 0;}
1 0
- HDU 3687 暴力
- HDU 3687--暴力
- Hdu 3687 National Day Parade(暴力)
- HDU 3687 National Day Parade(暴力)
- 【字符串暴力】hdu 2847
- HDU **** 暴力模拟
- HDU-1128 暴力搜索
- hdu 2438 暴力吧
- HDU 4175 暴力求解
- hdu 3332 暴力枚举
- HDU 3823 暴力枚举
- hdu 4608 暴力大数
- hdu 1702 暴力
- hdu 4585 shaolin (暴力)
- HDU 4576 Robot (暴力)
- hdu 3711 暴力
- HDU 3697 暴力贪心
- hdu 4499 Cannon(暴力)
- ArcFour加密解密,java RC4加密解密,java 加密解密
- hibernate多表关联配置
- c写的一个简单的计算器
- sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder包
- java synchronized支持
- HDU 3687 暴力
- Subsets II
- Opencv字体操作和设置
- 如何一个android工程作为另外一个android工程的lib
- 谈谈我所知道的API写法
- 修改tabhost的字体样式(颜色、字体大小) (有个R.id.title的问题)
- UIAlertController使用
- JAVA之代码混淆proguard基础(二)
- IOS学习十四:网络之ASIHttpRequest和SBJson简单使用