第5届ACM校赛—矩阵
来源:互联网 发布:youtube未连接到网络 编辑:程序博客网 时间:2024/06/06 02:31
矩阵
题目描述
给定一个n x m 的矩阵,每次操作,你可以对矩阵的某一个元素加上或减去一个整数值d,求最小的操作次数,使得矩阵的所有元素都相同,如果不能实现,输出-1。
输入
输入包含多组测试数据,对于每组测试数据:
第一行为三个整数 , m≤500,1≤d≤10000)。
接下来 m 个整数,第 行第 个整数为ij(1 ij≤10)。
当n=m=d=0 时代表输入结束。
输出
对于每组测试数据,输出一个整数,为最小操作次数,如果不能实现,输出-1。
64-bit,用long long 定义,请不要使用__int64 和%I64d。
PS:要想找到最小的次数,只能让整个矩阵,变成中间大的数;
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int a[250001];int cmp(const void *a,const void *b){ return *(int *)a - *(int *)b;}int main(){ int n,m,s; while(scanf("%d%d%d",&n,&m,&s)!=EOF) { if(n==0&&m==0&&s==0) break; for(int i = 0;i<n*m;i++) scanf("%d",&a[i]); qsort(a,n*m,sizeof(a[0]),cmp); long long int sum = 0; int flag = 0; long long int mid = a[(n*m)/2]; for(int i = 0;i<n*m;i++) { if((mid-a[i])%s!=0) { flag = 1; break; } if(mid>a[i]) { sum += (mid - a[i])/s; } else if(mid<=a[i]) { sum += (a[i]-mid)/s; } } (flag==1)?puts("-1"):printf("%lld\n",sum); } return 0;}
0 0
- 第5届ACM校赛—矩阵
- 2017暑期ACM俱乐部个人训练赛第5场 G.礼物 (矩阵快速幂)
- ACM——第几天
- 第5题:矩阵翻转
- ACM矩阵行列式计算
- ACM题 蛇形矩阵
- acm~矩阵求和
- ACM-矩阵之置换
- ACM-矩阵之递推式
- ACM-矩阵专题
- 【ACM】顺时针打印矩阵
- ACM--矩阵翻转
- ACM:蓝桥杯:矩阵乘法
- 【ACM题】矩阵输出
- 第41届ACM国际大学生程序设计
- ACM暑期计划 —— 第三天
- ACM暑期计划——第五天
- ACM暑期计划——第七天
- Robot框架两个简单例子
- typedef和define具体的详细区别
- 程序是怎么从代码到执行的
- Catalog远程访问sde时提示 :failed to connect to the specified server Operation Failed
- C#窗体皮肤制作(二):创建窗体库项目以及最小化、最大化、关闭按钮的实现
- 第5届ACM校赛—矩阵
- Qt学习之秒表的实现(StopWatch)
- wxWidgets初学者导引(4)——wxWidgets学习资料及利用方法指导
- 第十章 数组和指针(数组和指针的关系,指针操作)总结 140518
- AJAX
- Velocity的基本使用
- Java基础重温之线程——创建线程
- uva 11823 - Two Longest Paths (最小费用流)
- java杂记