题目链接


\(Description\)

给定一个\(n\times m\)的矩阵\(A_{i,j}\),每次可以将一列或一行取负。求一个方案使得若干次操作后,每行每列的和都非负。

\(n,m\leq100,\ 元素绝对值|A_{i,j}|\leq100\)。

\(Solution\)

容易想到每次找和为负的一行或一列取负。这样做正确性及复杂度会有啥问题么?

注意到每次取负,所有数的和是单调递增的,所以一定会结束。且每次和至少会增加\(2\)(\(-1\to1\)),而所有数的和最小是\(-10^6\),最大是\(10^6\),所以最多操作\(10^6\)次,复杂度\(O(10^6n)\)。

自己写了写,写的真是麻烦。。不需要queue,每次\(O(nm)\)for一遍反转行列即可。


//62ms	0KB
#include <cstdio>
#include <cctype>
#define gc() getchar()
typedef long long LL;
const int N=105; int A[N][N];
bool x[N],y[N]; inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=='-'&&(f=-1),c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now*f;
}
void Print(bool *a,int n)
{
int t=0;
for(int i=1; i<=n; ++i) t+=a[i];
printf("%d ",t);
for(int i=1; i<=n; ++i) a[i]&&printf("%d ",i);
putchar('\n');
} int main()
{
const int n=read(),m=read();
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j) A[i][j]=read();
for(; ; )
{
bool ok=1;
for(int i=1; i<=n; ++i)
{
int s=0;
for(int j=1; j<=m; ++j) s+=x[i]^y[j]?-A[i][j]:A[i][j];
if(s<0) x[i]^=1, ok=0;
}
for(int j=1; j<=m; ++j)
{
int s=0;
for(int i=1; i<=n; ++i) s+=x[i]^y[j]?-A[i][j]:A[i][j];
if(s<0) y[j]^=1, ok=0;
}
if(ok) break;
}
Print(x,n), Print(y,m); return 0;
}

Codeforces.226D.The table(构造)的更多相关文章

  1. Codeforces 1098B. Nice table 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF1098B.html 题解 首先,我们来证明一个结论: 合法的矩阵要么满足每列只有两种字符,要么满足每行只有两 ...

  2. Codeforces 417E Square Table(随机算法)

    题目链接:Codeforces 417E Square Table 题目大意:给出n和m.要求给出一个矩阵,要求每一列每一行的元素的平方总和是一个平方数. 解题思路:构造.依照 a a a b a a ...

  3. Codeforces Round #140 (Div. 1) D. The table 构造

    D. The table 题目连接: http://www.codeforces.com/contest/226/problem/D Description Harry Potter has a di ...

  4. CodeForces 1099E - Nice table - [好题]

    题目链接:https://codeforces.com/problemset/problem/1099/E You are given an $n×m$ table, consisting of ch ...

  5. Lua中的table构造式(table constructor)

    最简单的构造式就是一个空构造式{},用于创建一个空table. 构造式还可以用于初始化数组.例如,以下语句:days = {"Sunday", "Monday" ...

  6. Codeforces 1383D - Rearrange(构造)

    Codeforces 题面传送门 & 洛谷题面传送门 一道不算困难的构造,花了一节英语课把它搞出来了,题解简单写写吧( 考虑从大往小加数,显然第三个条件可以被翻译为,每次加入一个元素,如果它所 ...

  7. Codeforces 549B. Looksery Party[构造]

    B. Looksery Party time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  9. codeforces 323A. Black-and-White Cube 构造

    输入n 1 <= n <= 100 有一个n * n * n 的立方体,由n ^ 3 个1 * 1 * 1 的单位立方体构成 要用white 和 black 2种颜色来染这n ^ 3个立方 ...

随机推荐

  1. java Web工程师面试题集绵

    一.Java 基础 1.JDK .JRE 和JVM关系是什么? 答:A. JDK(Java Development Kit)即Java开发工具包,包含编写Java程序所必须的编译.运行等开发工具以及J ...

  2. jacoco + eclipse单元测试覆盖率

    概念 Jacoco:JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其JavaAgent技术监控J ...

  3. Nginx详解十八:Nginx深度学习篇之Rewrite规则

    Rewrite规则可以实现对url的重写,以及重定向 作用场景: 1.URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等 2.SEO优化 3.维护:后台维护.流量转发等 4.安全 配置语 ...

  4. ATM机模拟系统

    实验要求 https://pan.baidu.com/s/1Sq5joWyVsNhY8DYiyI4UmQ 源代码 /*信1705-1 20173458 王嘉梁*/ package atm; impor ...

  5. shell 判断目录是否存在

    判断/data/www/logs/wos_log/crontab_log是否, 如果不存在则新建 if [ ! -d "/data/www/logs/wos_log/crontab_log& ...

  6. 微信小程序--代码构成---JS 交互逻辑

    一个服务仅仅只有界面展示是不够的,还需要和用户做交互:响应用户的点击.获取用户的位置等等.在小程序里边,我们就通过编写 JS 脚本文件来处理用户的操作. <view>{{ msg }}&l ...

  7. sublime3 破解

    —– BEGIN LICENSE —–TwitterInc200 User LicenseEA7E-8900071D77F72E 390CDD93 4DCBA022 FAF6079061AA12C0 ...

  8. 【Android】application标签说明

    <application> <application android:allowClearUserData=["true" | "false" ...

  9. net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解

    asp.net core 内置DI容器的一点小理解   DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...

  10. keepalived配置介绍

    第一节 keepalived 高可用集群: 系统的可性= MTBF /(MTBF+MTTR) 系统可用时间,系统故障修复时间. 活动的节点将通过心跳不停的将自己的状态信息同步到备用节点上,一但主节点挂 ...