CF1701A Grass Field 题解
根据题意,给定一个 \(2\times2\) 的仅包含 \(0\) 和 \(1\) 的二维数组。定义一个操作,每次可以选择一行和一列将其变成 \(0\),求最小操作次数。
思路:根据枚举可得共有 \(14\) 种矩阵形态,通过观察可得:
当矩阵中 \(1\) 的数量为 \(0\) 时,即只有一种形态,其最小操作次数为 \(0\)。
当矩阵中 \(1\) 的数量为 \(1\) 时,共有四种形态(分别是 \(1\) 分布在四个角),此时最小操作次数为 \(1\)。
当矩阵中 \(1\) 的数量为 \(2\) 时,共有四种形态(分别是在同一行或同一列,在对角线上),其最小操作次数为 \(1\)。
当矩阵中 \(1\) 的数量为 \(3\) 时,共有四种形态(其形状类似于中文笔画中的横折,将其进行旋转),这时最小操作次数为 \(1\)。
当矩阵中 \(1\) 的数量为 \(4\) 时,只有一种形态,其最小操作次数为 \(2\)。
做法一:根据判断形态得出答案,可以通过此题,但做法二更优,此处使用做法二。
做法二:综上所述,可得当 \(1\) 的数量为 \(0\) 时,最小操作数为 \(0\);当 \(1\) 的数量为 \(1/2/3\) 时,最小操作数为 \(1\);当 \(1\) 的数量为 \(4\) 时,最小操作数为 \(2\)。即通过计算 \(1\) 的数量来得出答案,可以直接省去数组。
#include<cstdio>
#include<iostream>
using namespace std;
int t;//共有t组数据
int a;
int cnt;//计算1的数量
int main(){
scanf("%d",&t);
while(t--){
cnt=0;
for(int i=0;i<4;i++){
scanf("%d",&a);
cnt+=a;//统计1的数量
}
if(cnt==0) puts("0");
else if(cnt==1||cnt==2||cnt==3) puts("1");
else puts("2");
}
return 0;
}
CF1701A Grass Field 题解的更多相关文章
- 1.2机器学习基础下--python深度机器学习
1. 机器学习更多应用举例: 人脸识别 2. 机器学习就业需求: LinkedIn所有职业技能需求量第一:机器学习,数据挖掘和统计分析人才 http://blog.linked ...
- http://codeforces.com/problemset/problem/847/E
E. Packmen time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- T59
Working without a break makes you more prone to error. The great drawback to living near a main road ...
- PatentTips - Blending a Graphic over a Video
Television broadcasts of events can be enhanced by providing graphics that are blended with other im ...
- Lesson 2 Spare that spider
How much of each year do spiders killing insects? Why, you may wonder, should spiders be our friends ...
- 【题解】洛谷P3119 Grass Cownoisseur G
题面:洛谷P3119 Grass Cownoisseur G 本人最近在熟悉Tarjan的题,刷了几道蓝题后,我飘了 趾高气扬地点开这道紫题,我一瞅: 哎呦!这不是分层图吗? 突然就更飘了~~~ 用时 ...
- UVA 10382 Watering Grass(区间覆盖,贪心)题解
题意:有一块草坪,这块草坪长l 米,宽 w 米,草坪有一些喷头,每个喷头在横坐标为 p 处,每个喷头的纵坐标都是(w/2) ,并且喷头的洒水范围是一个以喷头为圆心,半径为 r 米的圆.每次最少需要打开 ...
- SPOJ ADAFIELD Ada and Field(STL的使用:set,multiset,map的迭代器)题解
题意:n*m的方格,“0 x”表示x轴在x位置切一刀,“0 y”表示y轴在y位置切一刀,每次操作后输出当前面积最大矩形. 思路:用set分别储存x轴y轴分割的点,用multiset(可重复)储存x轴y ...
- Grass Cownoisseur[Usaco2015 Jan]
题目描述 In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-w ...
随机推荐
- 谁动了我的主机? 之活用History命令
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Linux系统下可通过history命令查看用户所有的历 ...
- AspNetCore开源中间件-VueRouterHistory
前言 用过VueRouter路由组件的应该都知道,VueRouter有hash和history两种模式.hash模式会在url中插入#,history模式下url则看上去更加简洁美观.如果想要支持hi ...
- HCNP Routing&Switching之RSTP保护
前文我们了解了RSTP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16240348.html:今天我们来聊一聊RSTP保护相关话题: 我们知道RST ...
- Linux-Mycat实现MySQL的读写分离
centos8 服务器共三台 client 10.0.0.88 mariadb-10.4.24 mycat-server 10.0.0.18 ...
- 干掉RedisHelper,请这样用分布式缓存
前言 我们在项目中使用Redis时通常是写一个单例模式的RedisHelper静态类,暴露一些常用的Get.Set等操作,在需要使用地方直接RedisHelper.StringGet(xx,xx)就可 ...
- 126_Power BI中使用DAX计算股票RSI及股票均线相关
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前些日子,有朋友在交流股票RSI用DAX处理的问题,由于RSI股票软件的算法几乎都是需要用到股票从上市第一天开始 ...
- Flask表单验证
学习内容:①判断请求方式(request.method) from flask import Flask,render_template,request app = Flask(__name__) @ ...
- 最强肉坦:RUST多线程
Rust最近非常火,作为coder要早学早享受.本篇作为该博客第一篇学习Rust语言的文章,将通过一个在其他语言都比较常见的例子作为线索,引出Rust的一些重要理念或者说特性.这些特性都是令人心驰神往 ...
- linux-基于tensorflow2.x的手写数字识别-基于MNIST数据集
数据集 数据集下载MNIST 首先读取数据集, 并打印相关信息 包括 图像的数量, 形状 像素的最大, 最小值 以及看一下第一张图片 path = 'MNIST/mnist.npz' with np. ...
- 线程池:ThreadPoolExcutor源码阅读
ThreadPoolExcutor源码流程图:(图片较大,下载再看比较方便) 线程池里的二进制奥秘 前言: 线程池的五种状态state(RUNNING.SHUTDOWN.STOP.TIDYING.TE ...