题目

一个NxN的矩阵,矩阵中每个方格中都有一个数值,且每一行的数值严格单调递增,每一列的数值严格单调递增。分别取出N行和N列,形成2N个长度为N的数组,现在有一个数组丢失,已知剩下的2N-1个长度为N的数组,求出丢失的那个数组。

实现

开始做的时候,试图一行一行,一列一列的进行递推枚举,重建出原来的NxN的矩阵。做的时候,越写越麻烦。。。。看了别人的题解才发现自己的解法是多么傻。
    由于NxN的方格中每个数字都出现两次,一次是在该数字所在的行的数组中出现,一次是在该数字所在的列的数组中出现。那么,如果不发生丢失,则
N*2N个数字中每个数字都出现了偶数次(因为矩阵中可能存在相同的数字);丢失的那个长度为N的数组中的数字在
N*(2N-1)个已经给出的数字中只出现了奇数次。
    于是,只要找到在N*(2N-1)个已经给出的数字中只出现了奇数次的数字即可。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<deque>
#include<string>
#include<unordered_map>
#include<unordered_set>
using namespace std;
int num_count[2505];
int main() {
freopen("./apactest/B-large-practice.in", "r", stdin);
freopen("./apactest/B-large-practice.out", "w", stdout);
int T, N, num;
scanf("%d", &T);
for (int cas = 1; cas <= T; cas++) {
scanf("%d", &N);
memset(num_count, 0, sizeof(num_count));
for (int i = 0; i < 2 * N - 1; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &num);
num_count[num] ^= 1; //异或运算进行奇偶交替
}
}
printf("Case #%d:", cas);
for (int i = 1; i <= 2500; i++) { //个数为奇数的数字,就是丢掉的那张纸条上的数字
if (num_count[i])
printf(" %d", i);
}
printf("\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}

gcj_2016_Round1_B的更多相关文章

随机推荐

  1. 【C++】智能指针

    auto_ptr auto_ptr是当前C++标准库中提供的一种智能指针. auto_ptr在构造时获取某个对象的所有去(ownership),在析构时释放该对象.我们可以这样使用auto_ptr来提 ...

  2. C#中汉诺塔问题的递归解法

    百度测试部2015年10月份的面试题之——汉诺塔. 汉诺塔就是将一摞盘子从一个塔转移到另一个塔的游戏,中间有一个用来过度盘子的辅助塔. 百度百科在此. 游戏试玩在此. 用递归的思想解决汉诺塔问题就是分 ...

  3. dubbo模块组织方式

    dubbo源码版本:2.5.4 阿里通过maven将dubbo的36个模块组织成了一个项目,各个模块结构如下: -------------------------------------------- ...

  4. Struts2的输入校验(2)——客户端校验

    Struts2的输入校验(2) --客户端校验 Struts2客户端校验的使用: (1)使用Struts2的标签生成输入页面的表单: (2)为该<s:form>元素添加validate=& ...

  5. ZOJ 1015 Fishing Net(判断弦图)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=15 题意:给定一个图.判断是不是弦图? 思路:(1)神马是弦图?对于一 ...

  6. Cheatsheet: 2014 03.01 ~ 03.31

    .NET Should I be concerned about PDB files? async and await -Simplified-Internals Web Performance tr ...

  7. 样式表中的 element.style样式如何修改

    我们在写前面 web样式的时候,会发现有些时候,我们怎么修改 style里面的值,页面上的样式都不会修改,当你用工具查看时,会发现里面会有 element.style的值,这个值还找不到是在哪里出现的 ...

  8. Lambda表达式之Python

    一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: """命名的foo函数&q ...

  9. [51NOD1090] 3个数和为0(水题,二分)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090 找到所有数的和,然后再原数组里二分找符合条件的第三个数. ...

  10. CUBRID学习笔记 29 web管理中文语言文件 CUBRID教程

    网站的中文语言文件部分 http://files.cnblogs.com/files/wang2650/Messages.7z