题目链接:http://codeforces.com/contest/816/problem/C

题意:给出一个矩阵,问能否从都是0的情况下只将一整行+1或者一整列+1变形过来,如果可以输出需要步数最小的情况。不能输出-1

题解:就是一道模拟题,然后关于最小的只要考虑一种情况,就是当前行可以消除,也可以消除全部列的时候要考虑要删行还是删列,这个取决于n于m的大小

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int Max_Size = 5e2 + 10;
int a[Max_Size][Max_Size] , Minrow[Max_Size] , Mincol[Max_Size];
struct TnT {
string pos;
int num;
}T[Max_Size * Max_Size];
int main() {
int n , m;
cin >> n >> m;
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m ; j++) {
cin >> a[i][j];
}
}
memset(Minrow , 0 , sizeof(Minrow));
memset(Mincol , 0 , sizeof(Mincol));
for(int i = 1 ; i <= n ; i++) {
int Min = Max_Size;
for(int j = 1 ; j <= m ; j++) {
Min = min(Min , a[i][j]);
}
Minrow[i] = Min;
}
for(int i = 1 ; i <= m ; i++) {
int Min = Max_Size;
for(int j = 1 ; j <= n ; j++) {
Min = min(Min , a[j][i]);
}
Mincol[i] = Min;
}
int ans = 0;
for(int i = 1 ; i <= n ; i++) {
if(m > n) {
for(int j = 1 ; j <= m ; j++) {
a[i][j] -= Minrow[i];
Mincol[j] = min(Mincol[j] , a[i][j]);
}
for(int j = 1 ; j <= Minrow[i] ; j++) {
T[ans].pos = "row";
T[ans].num = i;
ans++;
}
Minrow[i] = 0;
}
}
for(int i = 1 ; i <= m ; i++) {
if(m <= n) {
for(int j = 1 ; j <= n ; j++) {
a[j][i] -= Mincol[i];
Minrow[j] = min(Minrow[j] , a[j][i]);
}
for(int j = 1 ; j <= Mincol[i] ; j++) {
T[ans].pos = "col";
T[ans].num = i;
ans++;
}
Mincol[i] = 0;
}
}
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m ; j++) {
a[i][j] -= Minrow[i];
Mincol[j] = min(Mincol[j] , a[i][j]);
}
for(int j = 1 ; j <= Minrow[i] ; j++) {
T[ans].pos = "row";
T[ans].num = i;
ans++;
}
Minrow[i] = 0;
}
for(int i = 1 ; i <= m ; i++) {
for(int j = 1 ; j <= n ; j++) {
a[j][i] -= Mincol[i];
Minrow[j] = min(Minrow[j] , a[j][i]);
}
for(int j = 1 ; j <= Mincol[i] ; j++) {
T[ans].pos = "col";
T[ans].num = i;
ans++;
}
Mincol[i] = 0;
}
int flag = 0;
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= m ; j++) {
if(a[i][j]) flag = 1;
}
}
if(!flag) {
cout << ans << endl;
for(int i = 0 ; i < ans ; i++) cout << T[i].pos << ' ' << T[i].num << endl;
}
else cout << -1 << endl;
return 0;
}

codeforces 816 C. Karen and Game(模拟+思维)的更多相关文章

  1. codeforces 816 B. Karen and Coffee(思维)

    题目链接:http://codeforces.com/contest/816/problem/B 题意:给出n个范围,q个查询问查询区间出现多少点在给出的n个范围中至少占了k次 题解:很显然的一道题目 ...

  2. codeforces 816 D. Karen and Test(逆元+思维+组合数)

    题目链接:http://codeforces.com/contest/816/problem/D 题解:显然一看到这题应该会想到是有什么规律的于是多写几项就会发现偶数列之间是有关系的. 满足a[i][ ...

  3. codeforces 816 E. Karen and Supermarket(树形dp)

    题目链接:http://codeforces.com/contest/816/problem/E 题意:有n件商品,每件有价格ci,优惠券di,对于i>=2,使用di的条件为:xi的优惠券需要被 ...

  4. Codeforces 916B Jamie and Binary Sequence ( 模拟 && 思维 )

    题意 : 给出一个数 n ,要求你用 k 个二的幂来组成这个数,要求输出这 k 个二的幂的指数,如果有多解情况则优先输出最大指数最小的那一个且要求按字典序输出,不存在则输出 No 分析 :  先来说一 ...

  5. 模拟+思维 HDOJ 5319 Painter

    题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...

  6. Codeforces Round #546 (Div. 2) D 贪心 + 思维

    https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则, ...

  7. Codeforces 758D:Ability To Convert(思维+模拟)

    http://codeforces.com/problemset/problem/758/D 题意:给出一个进制数n,还有一个数k表示在n进制下的值,求将这个数转为十进制最小可以是多少. 思路:模拟着 ...

  8. Codeforces Round #469 (Div. 2)C. Zebras(思维+模拟)

    C. Zebras time limit per test memory limit per test 512 megabytes input standard input output standa ...

  9. Codeforces 950D A Leapfrog in the Array ( 思维 && 模拟 )

    题意 : 给出 N 表示有标号 1~N 的 N 个数,然后从下标 1 开始将这 N 个数每隔一位放置一个,直到 N 个数被安排完,现在有一个操作就是每次将数列中最右边的数向离其左边最近的空缺处填上,一 ...

随机推荐

  1. postman使用pre-request script计算md5

    接口加了验签逻辑,具体是md5(salt+时间戳).被某君吐槽说测试不方便啊能不能先关掉.其实没有必要打开又关闭验签功能,postman的pre-request script功能完全可以模拟客户端加密 ...

  2. 在.NET CORE中使用配置文件:对 ConfigurationBuilder 的使用说明

    示例:ASP.NET MVC 使用示例: 如何覆写默认行为?如取消热更新支持,方法如下: 示例:控制台 使用应用程序参数 使用键值对枚举(这里以字典来说明) 使用JSON文件 注册配置文件中的某一个段 ...

  3. 用scrapy爬取搜狗Lofter图片

    用scrapy爬取搜狗Lofter图片 # -*- coding: utf-8 -*- import json import scrapy from scrapy.http import Reques ...

  4. Idea搭建Spring+SpringMvc+Mybatis框架集成项目

    1.新建maven项目 2.创建多模块 每个模块配置如父模块一样,除视图层 (视图层配置) 最后 common-通过模块,不依赖任何模块,有各种项目所需要用到的工具类 model- POJO.VO.D ...

  5. 【Java例题】3.2字符图形

    2.输出以下字符图形. 比如,当n=6时,结果如下: 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 6 6 再比如,当n=7时,结果如下: 1 2 2 2 3 3 3 3 ...

  6. ZDog:简单便捷好玩的的3D设计和动画制作库

    各位老铁,我灰太狼又又又回来了,嘿嘿!!!!最近在忙所以有日子没写博客了,今天带大家看个好玩的东西 这个东西是今天偶尔看到的,是啥呢,难道是漂亮的小姐姐吗?当然是......不可能的了,这个东西其实就 ...

  7. Opengl_入门学习分享和记录_01_Graphics Pipeline(图形渲染管线)

    写在前面的废话: 这个系列拖更了很久,很大一定程度上是由于自己最近忙着高数学习和线代学习..感觉时间特别紧缺(其实就是我太懒了)好了不废话了,总结开始. 正文开始: 首先Graphics Pipeli ...

  8. Unity进阶之ET网络游戏开发框架 06-游客登录

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. django 获取当前访问的URL

    next_url = request.path_info print(next_url) print(request.get_full_path()) //打印出全路径(路径和参数) print(re ...

  10. Appium+Python API相关知识了解

    首先,要先了解,官方Appium API // https://testerhome.com/topics/3144 刚开始的时候,没有看官方API,然后在网上瞎找学习资料,发现python相关的很少 ...