首页 > 其他 > 详细

CodeForces 226C The table[贪心]

时间:2019-03-02 23:25:57      阅读:176      评论:0      收藏:0      [点我收藏+]

一直找和是负的行/者列取反就行了....

可以发现每次取反负的行或者列一定会让矩阵和增加2 所以这个过程一定会结束,因为 值域 n m都很小 复杂度 \(O(n^3)\)

int n, m;
int a[105][103];
bool cnt[205];
void init() {

}
int check() {
  int pre = 0;
  lo1(i, n) {
    pre = 0;
    lo1(j, m) pre += a[i][j];
    if (pre < 0) return i;
  }
  lo1(i, m) {
    pre = 0;
    lo1(j, n) pre += a[j][i];
    if (pre < 0) return i + n;
  }
  return 0;
}
void solve() {
  n = in, m = in;
  lo1(i, n) lo1(j, m) in, a[i][j];
  int ss;
  while (ss = check()) {
    cnt[ss] ^= 1;
    if (ss > n) {
      ss -= n;
      lo1(i, n) a[i][ss] *= -1;
    }
    else lo1(i, m) a[ss][i] *= -1;
  }
  vint ans;
  lo1(i, n) if (cnt[i]) ans.pb(i);
  out, (int)(ans.size()), ' ';
  for (auto it : ans) out, it, ' ';
  puts(""), ans.clear();
  lo1(i, m) if (cnt[i + n]) ans.pb(i);
  out, (int)(ans.size()), ' ';
  for (auto it : ans) out, it, ' ';
}

CodeForces 226C The table[贪心]

原文:https://www.cnblogs.com/storz/p/10463475.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!