皮卡丘的夢想2

2021-08-08 19:51:27 字數 2648 閱讀 8450

皮卡丘的夢想2

time limit: 1000ms memory limit: 65536kb

submit statistic discuss

problem description

一天,乙隻住在 501 實驗室的皮卡丘決定發奮學習,成為像 leiq 一樣的巨巨,於是他向鎮上的賢者金桔請教如何才能進化成乙隻雷丘。

金桔告訴他需要進化石才能進化,並給了他乙個地圖,地圖上有 n 個小鎮,他需要從這些小鎮中收集進化石。

接下來他會進行 q 次操作,可能是打聽進化石的資訊,也可能是向你詢問第 l 個小鎮到第 r 個小鎮之間的進化石種類。

如果是打聽資訊,則皮卡丘會得到乙個小鎮的進化石變化資訊,可能是引入了新的進化石,也可能是失去了全部的某種進化石。

如果是向你詢問,你需要回答他第 l 個小鎮到第 r 個小鎮之間的進化石種類。

input

首先輸入乙個整數 t (1 <= t <= 10),代表有 t 組資料。

每組資料的第一行輸入乙個整數 n (1 <= n <= 100000) 和乙個整數 q (1 <= q <= 100000),分別代表有 n 個小鎮,表皮卡丘有 q 次操作。

接下來輸入 q 行,對於每次操作,先輸入操作型別,然後根據操作型別讀入:

1: 緊接著輸入 2 個整數 a (1 <= a <= n), b (1 <= b <= 60),表示第 a 個小鎮引入了第 b 種進化石

2: 緊接著輸入 2 個整數 a (1 <= a <= n), b (1 <= b <= 60),表示第 a 個小鎮失去了全部第 b 種進化石

3: 緊接著輸入 2 個整數 l, r (1 <= l <= r <= n),表示他想詢問從第 l 個到第 r 個小鎮上可收集的進化石有哪幾種

output

對於每組輸入,首先輸出一行 「case t:」,表示當前是第幾組資料。

對於每組資料中的每次 3 操作,在一行中按編號公升序輸出所有可收集的進化石。如果沒有進化石可收集,則輸出乙個 meik 的百分號 「%」(不包括引號)。

example input

1 10 10

3 1 10

1 1 50

3 1 5

1 2 20

3 1 1

3 1 2

2 1 50

2 2 20

3 1 2

3 1 10

example output

case 1:

% 50

50 20 50

% %

hint

#include 

#include

#include

#include

using

namespace

std;

struct node

tree[400000];

void bulid(int root,int left,int right)

int mid = (left+right)>>1;

bulid((root<<1)+1,left,mid);

bulid((root<<1)+2,mid+1,right);

tree[root].val = tree[(root<<1)+1].val +tree[(root<<1)+2].val;

}void updata1(int root,int left,int right,int pos,unsigned

long

long val)

int mid = (left + right)>>1;

int lc = (root<<1)+1;

int rc = (root<<1)+2;

if(pos<=mid)

updata1(lc,left,mid,pos,val);

else

updata1(rc,mid+1,right,pos,val);

tree[root].val = tree[lc].val | tree[rc].val;

}void updata2(int root,int left,int right,int pos,unsigned

long

long val)

int mid = (left + right)>>1;

int lc = (root<<1)+1;

int rc = (root<<1)+2;

if(pos<=mid)

updata2(lc,left,mid,pos,val);

else

updata2(rc,mid+1,right,pos,val);

tree[root].val = tree[lc].val | tree[rc].val;

}unsigned

long

long query(int root,int left,int right,int qleft,int qright)

int main()

else

if(x==2)

else

if(x==3)

else

printf(" %d",k);}}

printf("\n");

}else}}

}}

皮卡丘的夢想

problem description 一天,乙隻住在 501 的皮卡丘決定發奮學習,成為像 leiq 一樣的巨巨,於是他向鎮上的賢者金桔請教如何才能進化成乙隻雷丘。金桔告訴他需要進化石才能進化,並給了他乙個地圖,地圖上有 n 個小鎮,並且標註了每個小鎮上可收集的進化石。但是皮卡丘拿到地圖就矇圈了,...

sdutoj 皮卡丘的夢想2 狀態壓縮 線段樹

題目鏈結 思路 我開了60個樹狀陣列水過去了.但是資料在大點就不行了 正解應該是線段樹 狀態壓縮吧,將60個寶石每一種壓縮成乙個二進位制位.這樣向上回溯的時候記錄兩個子樹或就行了.includeusing namespace std define lson l,m,node 1 define rso...

css畫皮卡丘

不知道有沒有機會做你的皮卡丘,舉高高,要抱抱 這才是猛男該看的東西 doge gitee 預覽 搜尋 pikachu 1 border radius 可以實現彎曲的鬍鬚,並且使用偽元素覆蓋顏色。在畫皮卡丘的過程中,最難的應該就是彎曲的鬍鬚的那一部分了。mouth up lip.left mouth ...