zoukankan      html  css  js  c++  java
  • 模拟T1数字number

    那么第一题首先非常水的一道题……

    看一下题

    数字(number)

    Time Limit:1000ms   Memory Limit:128MB

    题目描述

    LYK拥有n个数,这n个数分别是a1,a2,…,an。

    有一天它做了一个梦,在梦里它的这n个数有部分被小偷偷走了,只剩下了m个数b1,b2,…,bm。它想知道有哪些数字被小偷偷走了!

    LYK告诉你a和b的值,你需要从小到大的告诉LYK,哪些数字不见了!

    输入格式(number.in)

        第一行一个数n,第二行n个数ai,表示一开始的数字。

        第三行一个数m,第四行m个数bi,表示剩下的数字。

    输出格式(number.out)

        一行n-m个数,从小到大输出所有被偷走的数字。

    Sample Input

    5

    1 3 3 7 8

    3

    3 7 8

    Sample Output

    1 3

    数据范围

    对于30%的数据n<=1000,ai与bi都是从小到大有序的。

    对于60%的数据n<=100000,ai与bi都是从小到大有序的。

    对于80%的数据n<=100000,ai,bi<=n。

    对于100%的数据n<=100000,1<=ai,bi<=10^9。

    由于上午讲了离散化,于是自然想到有离散化先处理一下,然后每次对照每个出现的数的出现个数就可以了.

    这里就不附上代码了

    金牌爷讲的时候却没有用离散化……

    他用的只是普通的数组操作

    那么一样的读入,然后快排,因为是100000的数量上限所以快排没有问题。

    然后就开始逐位比对,两个数组是要分开操作的,并不难,下面附上这种方法的代码。

     1 #include<algorithm>
     2 #include<iostream>
     3 using namespace std;
     4 int a[100005],b[100005];
     5 int main() {
     6     int n,m;
     7     cin >> n;
     8     for(int i=1; i<=n; ++i)
     9         cin >> a[i];
    10     cin >> m;
    11     for(int i=1; i<=m; ++i)
    12         cin >> b[i];
    13     sort(a+1,a+n+1);
    14     sort(b+1,b+m+1);    
    15     int N=1;
    16     for(int i=1; i<=n; ++i) {
    17     
    18         if(a[i]==b[N])
    19             N++;
    20         else
    21             cout << a[i]<<' ';
    22     }
    23     return 0;
    24 }

    P.S祝贺詹宜瑞同学Rank1!!祝贺李博翱同学获得鼠标!!祝贺我自己Rank倒第一!!!

  • 相关阅读:
    科学家质疑当今商用量子计算机的性能
    科学家研制出可模拟大脑信息处理的微芯片
    2014年电子科技市场衰退
    号外!CentOS 宣布加入红帽公司!
    hadoop,高富帅的玩具?
    成为Linux内核高手的四个方法
    分阶段事件驱动架构【SEDA】
    原型程式设计【原型语言】
    IOS7.1 企业应用 证书无效 已解决
    iOS7.1企业应用"无法安装应用程序 因为证书无效"的解决方案
  • 原文地址:https://www.cnblogs.com/DERZHAO/p/8424205.html
Copyright © 2011-2022 走看看