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 52 03 0
1 32 2 2
1 1 0
0 10 2
0 31 1
1 2
sample output
32032
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 奇數的話就肯定不可能...