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. 继承View绘制正方形且360旋转

    import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; impor ...

  2. PHP 关于回调的用法

    class aClass { public static function directWrite($message) { echo 'this is a static function from a ...

  3. Hamming Weight的算法分析(转载)

    看代码时遇到一个求32bit二进制数中1的个数的问题,感觉算法很奇妙,特记录学习心得于此,备忘. 计算一个64bit二进制数中1的个数. 解决这个问题的算法不难,很自然就可以想到,但是要给出问题的最优 ...

  4. 英语之idiom

    1 quick and dirty = Done or constructed in a hasty, approximate, temporarily adequate manner, but no ...

  5. 本人为项目组制定的一份页面优化指南(easyui页面优化方案)

    #本人为项目组制定的一份页面优化指南(easyui页面优化方案) ##背景 这是一篇我之前为项目组制定的页面优化指南,主要是面向表单页面,典型的像[注册用户](https://passport.cnb ...

  6. 《学习OpenCV》练习题第四章第一题b&c

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  7. java 的开源wiki维基系统

    几乎所有 维基 系统的对比网址:   http://www.wikimatrix.org/ XWiki,    第二代wiki. 它里面使用的 velocity 模板语言对j2ee开发相当有参考价值, ...

  8. ssh-keygen

  9. SharePoint咨询师之路:设计之前的那些事三:体系结构

    提示:本系列只是一个学习笔记系列,大部分内容都可以从微软官方网站找到,本人只是按照自己的学习路径来学习和呈现这些知识.有些内容是自己的经验和积累,如果有不当之处,请指正. 咨询师更多的时候是解决方案提 ...

  10. Instagram的技术探索2(转)

    原文:http://www.cnblogs.com/xiekeli/archive/2012/05/28/2520770.html 前一篇翻译了Instagram blog上的一篇文章<What ...