日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P1571 眼红的Medusa 题解

發布時間:2023/12/20 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P1571 眼红的Medusa 题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P1571 眼紅的Medusa 題解

  • 題目
    • 鏈接
    • 字面描述
      • 題目描述
      • 輸入格式
      • 輸出格式
      • 樣例 #1
        • 樣例輸入 #1
        • 樣例輸出 #1
      • 提示
  • 思路
  • 代碼實現

題目

鏈接

https://www.luogu.com.cn/problem/P1571

字面描述

題目描述

雖然 Miss Medusa 到了北京,領了科技創新獎,但是她還是覺得不滿意。原因是:他發現很多人都和她一樣獲了科技創新獎,特別是其中的某些人,還獲得了另一個獎項——特殊貢獻獎。而越多的人獲得了兩個獎項,Miss Medusa就會越眼紅。于是她決定統計有哪些人獲得了兩個獎項,來知道自己有多眼紅。

輸入格式

第一行兩個整數 n,mn, mn,m,表示有 nnn 個人獲得科技創新獎,mmm 個人獲得特殊貢獻獎。

第二行 nnn 個正整數,表示獲得科技創新獎的人的編號。

第三行 mmm 個正整數,表示獲得特殊貢獻獎的人的編號。

輸出格式

輸出一行,為獲得兩個獎項的人的編號,按在科技創新獎獲獎名單中的先后次序輸出。

樣例 #1

樣例輸入 #1

4 3 2 15 6 8 8 9 2

樣例輸出 #1

2 8

提示

對于 60%60\%60% 的數據,0≤n,m≤10000 \leq n, m \leq 10000n,m1000,獲得獎項的人的編號 <2×109\lt 2 \times 10^9<2×109

對于 100%100\%100% 的數據,0≤n,m≤1050 \leq n, m \leq 10^50n,m105,獲得獎項的人的編號 <2×109\lt 2 \times 10^9<2×109

輸入數據保證第二行任意兩個數不同,第三行任意兩個數不同。

思路

將兩個數組分別從小到大排序;
在兩個指針分別指向a,b,數組的進度下標;
若當前a數組等于 b數組放入帶輸出序列
a<b a的指針++
否則 b的指針++

代碼實現

#include<bits/stdc++.h> using namespace std;const int maxn=1e5+10; int n,m,cnt; int b[maxn]; struct node{int l,op; }a[maxn]; struct edge{int s,o; }ans[maxn]; inline bool cmp1(node u,node v){return u.l<v.l;} inline bool cmp2(edge u,edge v){return u.o<v.o;} int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&a[i].l);a[i].op=i;}for(int i=0;i<m;i++)scanf("%d",&b[i]);sort(a,a+n,cmp1);sort(b,b+m);int x=1,y=1;while(x<=n&&y<=m){if(a[x-1].l==b[y-1]){ans[++cnt].s=a[x-1].l;ans[cnt].o=a[x-1].op;x++,y++;}else if(a[x-1].l<b[y-1])x++;else y++;//2 6 8 15//2 8 9}sort(ans+1,ans+cnt+1,cmp2);for(int i=1;i<=cnt;i++)printf("%d ",ans[i].s);return 0; }

總結

以上是生活随笔為你收集整理的P1571 眼红的Medusa 题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。