codeforces#289_B Polo the Penguin and Matrix
题目地址:戳这里
其实就是利用一个很简单的高中数学题
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; } }
posted on 2014-03-23 18:06 814jingqi的ACM 阅读(128) 评论(0) 编辑 收藏 举报