Codeforces Round #419 A. Karen and Game
2017-06-20 10:28
465 查看
题意
在给定 N×M 的全零矩阵中,每步操作可选择:将一行中的所有元素
+1
将一列中的所有元素
+1
问对于给定的目标矩阵,如何操作能在最少步骤构造出目标矩阵,若不能,输出
-1。
解题思路
首先,找到目标矩阵 G 中的最小元素记为x,令 N×M 且所有元素均为 x 的矩阵为基准矩阵 B,则对于矩阵 G−B ,至少有一个元素为 0 ,故可以想象,当不考虑构造矩阵 G−B 的操作先后,其构造方法唯一。可暴力判断是否可行即可。
对于基准矩阵 B ,其最小构造步骤为 min(N, M) 。
代码
#include<bits/stdc++.h> using namespace std; int n, m, g[110][110], minR[110], c[110]; bool solve() { for(int j=1, st;j<=m;j++) { st = g[1][j] - minR[1]; for(int i=1;i<=n;i++) { if(st != g[i][j] - minR[i]) return false; } c[j] = st; } return true; } int main() { memset(minR, 0x3f, sizeof(minR)); scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&g[i][j]); minR[i] = min(minR[i], g[i][j]); } if(solve() == false) printf("-1"); else { if(n > m) { int tmp = 0x3f3f3f3f; for(int i=1;i<=n;i++) tmp = min(tmp, minR[i]); for(int i=1;i<=n;i++) minR[i] -= tmp; for(int j=1;j<=m;j++) c[j] += tmp; } int cnt = 0; for(int i=1;i<=n;i++) cnt += minR[i]; for(int j=1;j<=m;j++) cnt += c[j]; printf("%d\n", cnt); for(int i=1;i<=n;i++) for(int k=0;k<minR[i];k++) printf("row %d\n", i); for(int j=1;j<=m;j++) for(int k=0;k<c[j];k++) printf("col %d\n", j); } }
相关文章推荐
- Codeforces Round #419 (Div. 2) C. Karen and Game【贪心】
- codeforces round #419 B. Karen and Coffee
- Codefores Round #419 (Div.2) - C. Karen and Game(暴力模拟)
- Codeforces Round #419 (Div. 2) B. Karen and Coffee
- Codeforces Round #419 (Div. 2) E. Karen and Supermarket(树形DP)
- Codeforces Round #419 (Div. 2)_Karen and Coffee
- Codeforces Round #419 (Div. 1) C. Karen and Supermarket(树上背包)
- Codeforces Round #419 B. Karen and Test (思维 + 组合数 + 乘法逆元)
- codeforces round #419 E. Karen and Supermarket
- Codeforces Round #419 (Div. 2)-树形dp&依赖背包&-E. Karen and Supermarket
- Codeforces Round #419 D. Karen and Test
- Codeforces Round #419 (Div. 2)Karen and Coffee
- Codeforces Round #228 (Div. 2), problem: (A) Fox and Number Game
- Codeforces#419 Karen and Coffee
- Codeforces Round #430 (Div. 2) A. Kirill And The Game
- Codeforces Round #304 (Div. 2) D - Soldier and Number Game
- Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数论 筛表法
- Codeforces Round #228 Fox and Card Game 解题报告
- Codeforces Round #430 (Div. 2) E. Nikita and game
- Codeforces Round #174 (Div. 2) B. Cows and Poker Game(简单)