bzoj4810 Ynoi2017 由乃的玉公尺田

2022-05-02 05:21:10 字數 2029 閱讀 3737

由乃在自己的農田邊散步,她突然發現田裡的一排玉公尺非常的不美。這排玉公尺一共有n株,它們的高度參差不齊。

由乃認為玉公尺田不美,所以她決定出個資料結構題

這個題是這樣的:

給你乙個序列a,長度為n,有m次操作,每次詢問乙個區間是否可以選出兩個數它們的差為x,或者詢問乙個區間是否可以選出兩個數它們的和為x,或者詢問乙個區間是否可以選出兩個數它們的乘積為x ,這三個操作分別為操作1,2,3選出的這兩個數可以是同乙個位置的數

第一行兩個數n,m

後面一行n個數表示ai

後面m行每行四個數opt l r x

opt表示這個是第幾種操作,l,r表示操作的區間,x表示這次操作的x

定義c為每次的x和ai中的最大值,ai >= 0,每次的x>=2n,m,c <= 100000

對於每個詢問,如果可以,輸出yuno,否則輸出yumi

5 51 1 2 3 4

2 1 1 2

1 1 2 2

3 1 1 1

3 5 5 16

1 2 3 4

yuno

yumi

yuno

yuno

yumi

正解:莫隊演算法+$bitset$。

這題坑點巨多,資料範圍都沒給全。。

我們考慮莫隊演算法,把詢問排個序就行了。如何統計答案?如果是兩個數相乘等於$x$的情況,我們直接暴力列舉因子就行了。如果是兩個數相減等於$x$的情況,我們把每個數壓到$bitset$上,直接看$a[i]$的那個$bitset$陣列右移$x$位以後再與一下原陣列,如果不為0那麼顯然是有解的。如果是加法的話,我們考慮用另乙個$bitset$來壓$b[i]$,其中$b[i]$表示$c-a[i]$,其中$c$為$a[i]$的最大值。那麼只要$a[i]=b[j]+x-c$,那就是有解的。於是我們把這個$bitset$陣列右移$c-x$位,再與$a$陣列的$bitset$陣列與一下就行了。

1

//it is made by wfj_2048~

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include

15#define inf (1<<30)

16#define n (1000010)

17#define il inline

18#define rg register

19#define ll long long

20#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)

2122

using

namespace

std;

2324

struct nodeq[n];

2526

intcnt[n],bl[n],ans[n],a[n],b[n],n,m,mc,block;

2728 bitset <100010>f,g,h;

2930 il int

gi()

3738 il int cmp(const node &a,const node &b)

4243 il void add(rg int

x)48

49 il void del(rg int

x)54

55 il int check(rg int opt,rg int

x)60

if (opt==2)64

if (opt==3)70

}71return0;

72}7374 il void

work()

89for (rg int i=1;i<=m;++i)

90 puts(ans[i] ? "

yuno

" : "

yumi");

91return;92

}9394int

main()

BZOJ4810 Ynoi2017 由乃的玉公尺田

對每個區間維護一下這個區間每個數有沒有,用bitset壓一下,這個用莫隊跑出來,然後就能判加減合不合法了 乘的話根號列舉一下就行了 include include include include include include include include include include incl...

BZOJ 2535 Plane 航空管制2

題意 n個飛機一次出航。第i個飛機在出航序列中的序號不大於ki。另外有一些限制,表示飛機a的出航序號小於飛機b。1 輸出乙個合法的出航序列 2 輸出每個飛機最早的出航序號。思路 參考這裡。第一問比較好搞定。對於給出的,我們不妨建立有向邊。那麼b的所有孩子的出航序號必然小於b的出航序號。按照這個拓撲排...

BZOJ 2199奶牛議會 2 SAT

傳送門 bzoj2199 許可權題?沒關係,你洛上也有 洛谷 usaco11jan 大陸議會the continental cowngress 一道2 sat簡單題。只需要用到2 sat連有向邊的操作,拓撲排序和縮點都不需要,直接暴力找 非常之暴力 include using namespace s...