FZU 2192 位置資訊挖掘

2021-08-06 01:41:44 字數 1438 閱讀 6320

fzu - 2192 

o2o即online to offline,是指將線下的商務機會與網際網路結合,讓網際網路成為線下交易的前台。這些商務機會主要是偏服務類的商品,例如汽車售後服務、攝影服務、餐飲、電影等,其特色是線上購買、線下服務。

現在,jason給出使用者在移動端的購買行為資料,以及商品集合,希望能補全一些缺失的位置資訊。為了簡化問題,假設:

1、由於是服務類的商品,如果使用者位於城市a,那麼該使用者只會購買位於城市a的商品。

2、資料不存在雜訊,即測試資料都是合法的。

input

包含多組資料

每組輸入資料格式如下:

第一行,三個數:n、m、q,表示n個商品,m條購買行為資料,q個詢問。

接下來n行,每行兩個數:itemid、cityid,表示商家填寫的服務itemid,位於城市cityid。

接下來m行,每行三個數:userid、itemid、cityid,表示使用者userid購買了服務itemid,移動端定位城市cityid。

接下來q行,每行兩個數:0、itemid或者1、userid,表示詢問服務itemid所在的城市,或者使用者userid所在的城市。

注意:0表示位置資訊缺失。

output

每組輸出資料格式如下: q行,每行乙個數:cityid,表示服務itemid位於cityid,或者使用者userid位於cityid。

sample input

3 2 5

2 03 0

1 32 2 2

1 1 0

0 10 2

0 31 1

1 2

sample output

320

32

hint

1<=n<=limit

1<=m<=limit

1<=q<= n+m

1<=itemid<=n

1<=userid<=m

0<=cityid<=n+m,0表示位置資訊缺失

對於60%的資料,limit<=10^2;對於100%的資料,limit<=10^5

並查集#include #include #include #include #include typedef long long ll;

using namespace std;

int fa[100100]=;

int num[100100];

int find(int);

int main()

{ int n,m,q;

while(scanf("%d%d%d",&n,&m,&q)!=eof)

{for(int i=0;i<=n+m;i++)fa[i]=i,num[i]=0;//n以後是使用者的編號 fa[i]=i means i與i同屬乙個城市;

int it,ci,us;

for(int i=0;i

2 19 找出主要元素

大小為 n 的陣列 a,其主要元素是乙個出現次數超過n 2 的元素 從而這樣的元素最多有乙個 例如,陣列 3,3,4,2,4,4,2,4,4 有乙個主要元素,而陣列 3 3,4 2,4 4,2 4沒有主要元素。如果沒有主要元素,那麼你的程式應該指出來。下面是求解該問題的乙個演算法概要。首先找出主要元...

(2 19)資料結構

性質 兒子的值一定不小於父親的值,樹的結構是從上到下,從左到右緊湊排列的。插入數值 先在末尾插入該數值,然後不斷向上提公升直到沒有大小顛倒為止。刪除最小值 首先把堆的最後乙個節點的數值複製到根節點上,並且刪除最後乙個節點。然後不斷向下交換直到沒有大小顛倒為止。在向下交換的過程中,如果有2個兒子,那麼...

試題解析2 19

試題解析 t1 簡化題意 乙個序列是優美的當且僅當可以通過操作 將相鄰兩個數移動到序列任意位置 使序列不降 考慮怎麼使這個序列不降,考慮移動會造成的影響,逆序對 2 或者不變 那麼如果有偶數個,那麼一定優美,否則一定不優美 如果是偶數個,肯定能構造出一種方案使得逆序對減少到 0 奇數的話就肯定不可能...