<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Cordforces 1774D題解

      題目鏈接: https://codeforces.com/problemset/problem/1774/D
      Description:
      給定n個長為m的二進制串,每次可以選出任意兩個,然后交換這兩個二進制串同一列的數。求最少的操作次數,使得每一行含有的1的數量相等。
      input:
      第一行是測試案例的數目。
      每個測試案例的第一行包含兩個字符n, m(2 ≤ n ≤ 10^5, 2 ≤ m ≤ 10^5)。
      接下來n行每行包含m個僅為0或1的數字,是二進制串的具體內容。
      output:
      如果沒有辦法做到每行含有的1數目相等,輸出-1,否則在第一行輸出最少的操作次數k,
      然后接下來k行,每行輸出三個字符,其中前兩個是選中的行,第三個是選中的列

      Sample input:

      3
      3 4
      1 1 1 0
      0 0 1 0
      1 0 0 1
      4 3
      1 0 0
      0 1 1
      0 0 1
      0 0 0
      2 2
      0 0
      0 1

      Sample output:

      1
      2 1 1
      1
      4 2 2
      -1

      先統計每行1的個數, 并且計算出來每行應該有多少個。然后按列遍歷,對于第j列, 如果第i行1的個數多于平均值并且g[i][j]是1的話就記錄下來,如果第i行1的個數小于平均值并且g[i][j]是0的話也記錄下來。
      Code:

      #include <bits/stdc++.h>
      
      using namespace std;
      
      typedef long long LL;
      #define int LL
      
      struct Node {
      	int x, y, z;
      };
      
      void solve(void) {
      	int n, m; cin >> n >> m;
      	int cnt = 0; int f[n + 1];
      	memset(f, 0, sizeof f);
      	vector<int> g[n + 1];
      	for(int i = 1; i <= n; i ++) {
      		g[i].resize(m + 1);
      		for(int j = 1; j <= m; j ++) {
      			cin >> g[i][j];
      			if(g[i][j]) {
      				cnt ++;
      				f[i] ++;
      			}
      		}
      	}
      	if(cnt % n) {
      		cout << "-1\n";
      		return;
      	}
      	cnt /= n;
      	vector<Node> ans;
      	for(int i = 1; i <= m; i ++) {
      		queue<int> que1, que2;
      		for(int j = 1; j <= n; j ++) {
      			if(f[j] > cnt && g[j][i]) que1.push(j);
      			if(f[j] < cnt && !g[j][i]) que2.push(j);
      		}
      		while(que1.size() && que2.size()) {
      			int x = que1.front();
      			int y = que2.front();
      			que1.pop();
      			que2.pop();
      			f[x] --; f[y] ++;
      			ans.push_back({x, y, i});
      		}
      	}
      	cout << ans.size() << '\n';
      	for(int i = 0; i < ans.size(); i ++) {
      		cout << ans[i].x << ' ' << ans[i].y << ' ' << ans[i].z << '\n';
      	}
      }
      
      signed main()
      {
      	ios::sync_with_stdio(false);
      	cin.tie(0);
      	int t; cin >> t;
      	while(t --) solve();
      }
      
      posted @ 2022-12-28 16:47  zuotihenkuai  閱讀(36)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲成色精品一二三区| 中文字幕人妻av12| 国产综合有码无码中文字幕| 少妇激情一区二区三区视频小说| 九九热在线视频精品免费| 国产色无码精品视频免费| 精品国产女同疯狂摩擦2| 亚洲欧洲日产国码久在线| 精品一区二区三区国产馆| 久久人人97超碰爱香蕉| 日韩人妻中文字幕精品| 国产熟女丝袜av一二区| 亚洲国产成人AⅤ片在线观看| 国产女人在线视频| 蜜臀av一区二区精品字幕| 国产AV影片麻豆精品传媒| 人妻无码| 青春草公开在线视频日韩| 丝袜美腿一区二区三区| 免费观看全黄做爰大片| 国产中文字幕精品视频| 97人妻天天爽夜夜爽二区| 中文字幕av日韩有码| 东京热人妻丝袜无码AV一二三区观| 国内极度色诱视频网站| 国产精品色三级在线观看| 国产高清午夜人成在线观看,| 99国产欧美另类久久久精品| 日韩av熟女人妻一区二| 一级做a爰片在线播放| 人妻出轨av中文字幕| 亚洲天堂精品一区二区| 日日摸天天爽天天爽视频| 亚洲的天堂在线中文字幕| 中文字幕日韩精品有码| 綦江县| 日本一区二区久久人妻高清 | 国产亚洲精品AA片在线爽| 国产女人高潮视频在线观看| 国产成人精品永久免费视频| 久久精品国产亚洲精品|