「雅礼集训 2017 Day1」矩阵
时间:2020-05-09
本文章向大家介绍「雅礼集训 2017 Day1」矩阵,主要包括「雅礼集训 2017 Day1」矩阵使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
「雅礼集训 2017 Day1」矩阵
传送门
题解
首先考虑因为是覆盖,所以我们肯定是先把一行搞成全黑,然后把它覆盖所有的非全黑列.
不合法很显然就是不存在黑色格子.把一行搞黑的最小值怎么求呢?
考虑如果把第\(i\)行搞成全黑,此时\(a_{i,j}\)不是黑的,那么应该是\(\exist k,a_{k,i}=1\).发现这个和\(j\)无关,所以只需要记一下每一行的黑的个数和每一列的黑的个数.如果第\(i\)列不存在的话,你可以考虑如果\(a_{x,y}=1\),那么可以把\(a_{y,i}-> 1\),所以只需要多一次贡献即可.
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define REP(a,b,c) for(int a=b;a<=c;a++)
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
typedef pair<int,int> pii;
#define mp make_pair
inline int gi()
{
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
const int N=1010;
int a[N],b[N],n,flag;
char s[N];
int main()
{
n=gi();
for(int i=1;i<=n;i++)
{
scanf("%s",s+1);
for(int j=1;j<=n;j++)
if(s[j]=='#'){flag=1;a[i]++;b[j]++;}
}
if(!flag)return puts("-1"),0;
int ans=1e9+10;
for(int i=1;i<=n;i++)ans=min(ans,n-a[i]+!b[i]);
for(int i=1;i<=n;i++)if(b[i]!=n)ans++;
printf("%d\n",ans);
return 0;
}
原文地址:https://www.cnblogs.com/fexuile/p/12858409.html
- RSA简介(四)——求逆算法
- 平方根的C语言实现(三) ——最终程序实现
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
- 【视频】Es6新特性-Symbol
- shell编程/字库裁剪(3)——验证
- 特征选择(Feature Selection)引言
- shell编程/字库裁剪(2)——编程过程
- 使用mock来编译和管理RPM软件包
- C语言/原子/编译,你真的明白了吗?
- ASP.NET Core应用的错误处理[4]:StatusCodePagesMiddleware中间件如何针对响应码呈现错误页面
- 用sed实现wc -w的功能
- RPM软件包管理机制之旅
- 使用python操作mysql
- NBD-网络块设备[翻译]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP PDO数据库操作预处理与注意事项
- laravel 框架配置404等异常页面
- Django –Xadmin 判断登录者身份实例
- Laravel 队列使用的实现
- keras 两种训练模型方式详解fit和fit_generator(节省内存)
- Keras 中Leaky ReLU等高级激活函数的用法
- Python错误的处理方法
- python3的pip路径在哪
- MySQL 案例:init_connect 引发的 Lost connection
- PHP一个简单的无需刷新爬虫
- PHP实现函数内修改外部变量值的方法示例
- PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
- PHP命名空间简单用法示例
- PHP array_shift()用法实例分析
- PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】