HDU 3687 暴力

來源:互聯網
上載者:User

標籤:io   os   ar   for   sp   amp   size   bs   as   

在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;}


HDU 3687 暴力

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.