您的位置:首页 > 产品设计 > UI/UE

codeforces#289_B Polo the Penguin and Matrix

2014-03-23 18:06 537 查看
题目地址:戳这里

其实就是利用一个很简单的高中数学题

x1<x2<x3<...<xn

f(x)=sigma |x-xi| 那么n为奇数时 取x=x(n+1)/2 当n为偶数时 取x属于 x(n/2)~ x(n/2+1) 都行

代码:

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using   namespace  std;

int p[105][105];

int main()
{
int n,m,d;
cin>>n>>m>>d;

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>p[i][j];

int standard=p[0][0];

bool ok=1;

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if((p[i][j]-standard)%d!=0)
{

ok=0;
break;
}

if(!ok)  cout<<-1<<endl;
else
{
vector<int>  v;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
v.push_back((p[i][j]-standard)/d);

sort(v.begin(),v.end());

int size=v.size();

int   ans=0;

standard=v[size/2];

for(int i=0;i<size;i++)
ans+=abs(v[i]-standard);

cout<<ans<<endl;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: