模拟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倒第一!!!
轉載于:https://www.cnblogs.com/DERZHAO/p/8424205.html
總結
以上是生活随笔為你收集整理的模拟T1数字number的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [机器学习与scikit-learn-1
- 下一篇: 转载:分布式Session共享:tomc