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. Visual Studio 2005 移植 - WINVER,warning C4996, error LINK1104

    Visual Studio 2005 移植 - WINVER,warning C4996, error LINK1104 一.WINVER  Compile result:  WINVER not d ...

  2. jquery、js操作checkbox全选反选

    全选反选checkbox在实际应用中比较常见,本文有个不错的示例,大家可以参考下 操作checkbox,全选反选//全选 function checkAll() { $('input[name=&qu ...

  3. PropertyPlaceholderConfigurer加载属性配置文件:

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. Python 读取excel

    一.到python官网下载http://pypi.python.org/pypi/xlrd模块安装, sudo python setup.py install 二.使用介绍 1.导入模块 import ...

  5. Python cookbook-读书笔记01

    1 数据结构和算法 1.1 Unpacking a sequence into separate variable(解包,赋值) >>> data = [ 'ACME', 50, 9 ...

  6. c语言字符串大小写字母转换

    输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一 ...

  7. Tcl之Intro

    Tool command language, a widely used scripting tool that was deveoped for controlling and extending ...

  8. (转)oracle字符集与汉字

    Oracle与汉字问题与字符集 分类: oracle 2012-10-29 17:31 425人阅读 评论(0) 收藏 举报 Oracle字符集引起的几个问题,常见的就是汉字占多少个字节,其次就是字符 ...

  9. VMWare高可用集群在企业的应用

    650) this.width=650;" border="0" src="http://img1.51cto.com/attachment/201011/21 ...

  10. 第二百三十四天 how can I 坚持

    今天果然不负众望,下了一天的雪啊,挺好. 今天把花搞了下,都弄花盆里了,希望不会就这么挂掉.八千代,绿萝,还有小叶元宝. 中午喝了点酒,没感觉. 过两天气温就零下十多度了,该咋办啊,最怕冬天.家里现在 ...