D. The table

题目连接:

http://www.codeforces.com/contest/226/problem/D

Description

Harry Potter has a difficult homework. Given a rectangular table, consisting of n × m cells. Each cell of the table contains the integer. Harry knows how to use two spells: the first spell change the sign of the integers in the selected row, the second — in the selected column. Harry's task is to make non-negative the sum of the numbers in each row and each column using these spells.

Alone, the boy can not cope. Help the young magician!

Input

The first line contains two integers n and m (1 ≤ n,  m ≤ 100) — the number of rows and the number of columns.

Next n lines follow, each contains m integers: j-th integer in the i-th line is ai, j (|ai, j| ≤ 100), the number in the i-th row and j-th column of the table.

The rows of the table numbered from 1 to n. The columns of the table numbered from 1 to m.

Output

In the first line print the number a — the number of required applications of the first spell. Next print a space-separated integers — the row numbers, you want to apply a spell. These row numbers must be distinct!

In the second line print the number b — the number of required applications of the second spell. Next print b space-separated integers — the column numbers, you want to apply a spell. These column numbers must be distinct!

If there are several solutions are allowed to print any of them.

Sample Input

4 1

-1

-1

-1

-1

Sample Output

4 1 2 3 4

0

Hint

题意

给你一个n*m的矩阵,矩阵元素的数字绝对值小于等于100,你可以使得一行或者一列的所有数取反

然后让你构造一个解,使得每一行每一列的和都是非负数

题解:

显然,我们可以随便搞一搞(雾

我们直接看到负的行,直接翻转就好了,看见负的列也直接翻转

这样最多翻转100^4次,是可以过的。

为什么呢?

因为你翻转一次,可以使得整个矩阵的和至少+2

然后矩阵的和为[-10000,10000],所以最多n*100^4的复杂度

然后水一水就过了

来自主代码手的冬令营构造题选讲

代码

#include<bits/stdc++.h>
using namespace std; int mp[120][120];
int sumx[120];
int sumy[120];
int ans1[120];
int ans2[120];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&mp[i][j]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
sumx[i]+=mp[i][j];
sumy[j]+=mp[i][j];
}
}
while(1)
{
int flag = 0;
for(int i=1;i<=n;i++)
{
if(sumx[i]<0)
{
for(int j=1;j<=m;j++)
{
sumy[j]=sumy[j] - 2*(mp[i][j]);
mp[i][j]=-mp[i][j];
}
ans1[i]^=1;
sumx[i]=-sumx[i];
flag = 1;
}
}
if(flag)continue;
for(int j=1;j<=m;j++)
{
if(sumy[j]<0)
{
for(int i=1;i<=n;i++)
{
sumx[i]=sumx[i] - 2*(mp[i][j]);
mp[i][j]=-mp[i][j];
}
ans2[j]^=1;
sumy[j]=-sumy[j];
flag = 1;
}
}
if(flag==0)break;
}
int Ans1=0;
for(int i=1;i<=110;i++)
{
if(ans1[i])
Ans1+=1;
}
int Ans2=0;
for(int i=1;i<=110;i++)
{
if(ans2[i])
Ans2+=1;
}
cout<<Ans1<<" ";
for(int i=1;i<=110;i++)
if(ans1[i])cout<<i<<" ";
cout<<endl;
cout<<Ans2<<" ";
for(int i=1;i<=110;i++)
if(ans2[i])cout<<i<<" ";
cout<<endl;
}

Codeforces Round #140 (Div. 1) D. The table 构造的更多相关文章

  1. Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造

    Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 ht ...

  2. Codeforces Round #323 (Div. 2) C. GCD Table 暴力

    C. GCD Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/583/problem/C ...

  3. Codeforces Codeforces Round #319 (Div. 2) A. Multiplication Table 水题

    A. Multiplication Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/57 ...

  4. Codeforces Round #256 (Div. 2) D. Multiplication Table(二进制搜索)

    转载请注明出处:viewmode=contents" target="_blank">http://blog.csdn.net/u012860063?viewmod ...

  5. Codeforces Round #323 (Div. 2) C. GCD Table map

    题目链接:http://codeforces.com/contest/583/problem/C C. GCD Table time limit per test 2 seconds memory l ...

  6. Codeforces Round #323 (Div. 2) C.GCD Table

    C. GCD Table The GCD table G of size n × n for an array of positive integers a of length n is define ...

  7. Codeforces Round #323 (Div. 1) A. GCD Table

    A. GCD Table time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. Codeforces Round #256 (Div. 2) D. Multiplication Table 二分法

     D. Multiplication Table time limit per test 1 second memory limit per test 256 megabytes input st ...

  9. Codeforces Round #256 (Div. 2) D. Multiplication Table

    主题链接:http://codeforces.com/contest/448/problem/D 思路:用二分法 code: #include<cstdio> #include<cm ...

随机推荐

  1. 【转】从外行的视角尝试讲解为什么这回丰田栽了【全文完】【v1.01】

    转自:http://club.tgfcer.com/thread-6817371-1-1.html  [第一部分]背景简介 前几年闹得沸沸扬扬的丰田刹不住事件最近又有新进展.十月底俄克拉荷马的一次庭审 ...

  2. Provider 错误 '80004005' 未指定的错误 的最终解决方法

    今天在配置公司的香港WEB服务器Server2003系统,建好应用程序池后,发现远行程序经常出现下面的错误,刷新几下又可以,但过不了多久又是出现下面的错误!! 在网上查找相关问题得知,这是2003SP ...

  3. list 容器 排序函数.xml

    pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...

  4. 【LeetCode】6 - ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  5. hadoop中HBase子项目入门讲解

    HBase 是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行, ...

  6. Hadoop第三天---分布式文件系统HDFS(大数据存储实战)

    1.开机启动Hadoop,输入命令:  检查相关进程的启动情况: 2.对Hadoop集群做一个测试:   可以看到新建的test1.txt和test2.txt已经成功地拷贝到节点上(伪分布式只有一个节 ...

  7. 1、Hadoop架构

    1.Hadoop 是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元放到任何集群节点上执行. 作业(job):一个 ...

  8. ssh-keygen -t rsa -f cloud.key ssh -i cloud.key <username>@<instance_ip>

  9. SQL Server 索引 之 书签查找 <第十一篇>

    一.书签查找的概念 书签可以帮助SQL Server快速从非聚集索引条目导向到对应的行,其实这东西几句话我就能说明白. 如果表有聚集索引(区段结构),那么书签就是从非聚集索引找到聚集索引后,利用聚集索 ...

  10. Jquery 操作页面中iframe自动跟随窗口大小变化,而页面不出现滚动条,只在iframe内部出滚动条

    很多时候大家需要iframe自适应所加载的页面高度而不要iframe滚动条,但是这次我需要的是页面不需要滚动条而iframe要滚动条,且iframe自动跟随窗口大小变化.自适应页面大小.下面是代码,下 ...