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 ...
随机推荐
- 『现学现忘』Git基础 — 20、Git中忽略文件补充
目录 1.忽略文件常遇到的问题 2.忽略文件配置优先级 3.忽略已跟踪文件的改动(本机使用) 4.autocrlf和safecrlf参数说明 (1)提出问题 (2)autocrlf说明 (3)safe ...
- java高级用法之:JNA中的回调
目录 简介 JNA中的Callback callback的应用 callback的定义 callback的获取和应用 在多线程环境中使用callback 总结 简介 什么是callback呢?简单点说 ...
- 如何使用Python实现图像融合及加法运算?
摘要:本篇文章主要讲解Python调用OpenCV实现图像融合及加法运算,包括三部分知识:图像融合.图像加法运算.图像类型转换. 本文分享自华为云社区<[Python图像处理] 五.图像融合.加 ...
- Mqtt入门:在线调试连接阿里云
近期课设需要做个东西,我想要做个上位机更好的显示. 但是一开始学习一样东西,听没头绪的,不知道从哪里入手,尝试过去B站找视频看,但是感觉视频讲的都是基础的东西,不是说人家up主讲的不好,只是对于入门, ...
- 难对齐、难保障、难管理?一文了解字节跳动如何解决数据SLA治理难题
基于字节跳动分布式治理的理念,数据平台数据治理团队自研了SLA保障平台,目前已在字节内部得到广泛使用,并支持了绝大部分数据团队的SLA治理需求,每天保障的SLA链路数量过千,解决了数据SLA难对齐.难 ...
- 【单片机】CH32V103C8T6定时器3程序实验
代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...
- 我的第一个springboot starter
在springboot中有很多starter,很多是官方开发的,也有是个人或开源组织开发的.这些starter是用来做什么的呐? 一.认识starter 所谓的starter,在springb ...
- 关于一次Web线下面试的思考
前言: 今天面试一家Web前端的公司,由于跟初筛的面试官关系挺好,按理来说我在第一次线上面试就应该被淘汰了(呜呜呜),接下来是线下面试,不出意外的话,我凉了.但是这些天的面试经验并非全无收获.我的线下 ...
- vue按需引入第三方ui插件优化
components.js import { fullScreenContainer, borderBox12, scrollBoard, loading, borderBox10, borderBo ...
- 基于Vue.js的Web视频播放器插件vue-vam-video@1.3.6 正式发布
前言 今日正式发布一款基于Vue.js的Web视频播放器插件.可配置,操作灵活.跟我一起来体验吧! 线上地址体验 基于vue3.0和vue-vam-video,我开发了一款在线视频播放器. 网址: h ...