題目背景
本題時限3s,空間128mb
我感覺我要掛省選
人渣的本願是乙個有趣的番
可愛的花火喜歡從小和她談♂笑♂風♂生的歐♂尼♂醬鳴海,歐尼醬特別想當老師,然後劇本安排當了花火的班主任。
然而有個叫做皆川茜的奇怪的人搶走了歐尼醬!
花火就很失落呀,然後看到乙個叫做麥的人也很失落,原來麥喜歡茜老師。。。
花火和麥從此天天談笑風生,然後決定在一起,把對方當做自己喜歡的人的替代品
因為花火很可愛,所以有許多奇怪的人喜歡花火,比如乙個叫做繪鳩早苗的妹子
因為麥長的也不錯,所以有許多奇怪的人喜歡麥,比如乙個叫做最可的妹子
然後就開始愉快的生♂活了~
以上內容如果你沒有看過這個番可以無視掉
按照套路,現在歐尼醬會問花火乙個oi問題(一般是資料結構),然後花火肯定不會oi,所以會來請教您這位ioi au選手,然後您肯定會幫助她
但是 這個套路太無聊了,我們來換乙個(但是不會改變您是ioi au選手的事實)
花火有一天看了幾個有趣的番,叫做「在w??身上尋找**是否搞錯了什麼」,「從**開始的?x?」,「我家大佬不可能那麼可愛」,然後發現??h太厲害了,然後就穿越到了異世界,和???談笑風生
花火就和???做了乙個交♂易,花火幫???做一道題,然後???幫花火改寫地球online的程式,讓花火和歐尼醬在♂一♂起
???雖然非常厲害,但是不會資料結構題,他最近剛剛遇到一道有趣的資料結構題,於是他接受了交易
但是花火也不會資料結構題呀
所以又回到了這個老套路,就靠您這個ioi au選手來幫她了!
以上內容如果你沒有看過這個番還是可以無視掉
這裡用乙個經典的圖來解釋這個關係(其實沒那麼蛋疼的)
題目描述
這個題是這樣的:
給你乙個序列 aa,長度為 nn,有 mm 次操作,每次詢問乙個區間是否可以選出兩個數它們的差為 xx,或者詢問乙個區間是否可以選出兩個數它們的和為 xx,或者詢問乙個區間是否可以選出兩個數它們的乘積為 xx ,這三個操作分別為操作 1,2,31,2,3。
選出的這兩個數可以是同乙個位置的數。
輸入格式
第一行兩個數 n,mn,m。
後面一行 nn 個數表示 a_iai
。後面 mm 行每行四個數 opt l r x。
optopt 表示這個是第幾種操作,l,rl,r 表示操作的區間,xx 表示這次操作的 xx。
輸出格式
對於每個詢問,如果可以,輸出 hana,否則輸出 bi。
輸入輸出樣例
輸入 #1複製
10 10
1 1 8 9 9 1 1 1 1 9
3 5 9 42
2 1 3 14
2 3 5 2
2 3 3 6
1 6 10 18
3 4 9 14
2 1 4 22
3 1 3 32
2 5 6 32
3 1 9 17
輸出 #1複製
bibi
bibi
bibi
bibi
bibi
輸入 #2複製
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
輸出 #2複製
hana
bihana
hana
bi說明/提示
定義 cc 為每次的 xx 和 a_iai
中的最大值,a_i \geq 0ai
≥0,每次的 x\geq 2x≥2。
對於 10%10% 的資料,n,m,c \leq 100n,m,c≤100。
對於另外 10%10% 的資料,n,m,c \leq 3\times 10^3n,m,c≤3×103。
對於另外 10%10% 的資料,只有 11 操作。
對於另外 10%10% 的資料,只有 22 操作。
對於另外 10%10% 的資料,只有 33 操作。
對於 100%100% 的資料,n,m,c \leq 10^5n,m,c≤105。
加減bitset維護,乘法列舉約數
用莫隊解決
#include
#define n 100000
#define m 20000005
using
namespace std;
struct queryq[n+5]
;int m,n,l,r,s;
int a[n+5]
,c[n+5]
,ans[n+5]
,rt[n+5]
;bitset5> now1,now2;
char dr[m+10]
,*p=dr;
inline
bool
operator
<
(query x,query y)
struct fastio
inline
intxchar()
inline
intread()
}io;
inline
void
init()
sort
(q+1
,q+m+1)
;l=1
;r=0;}
inline
void
add(
int x)
inline
void
del(
int x)
intmain()
else
if(k==2)
else}}
for(
int i=
1;i<=m;i++)if
(ans[i]
)puts
("hana");
else
puts
("bi");
return0;
}
題解 luogu p3674小清新人渣的本願
題目鏈結 演算法 bitset 莫隊 先把詢問都離線下來,用莫隊判斷每個詢問區間。並維護兩個bitset s 1,s 2 乙個判斷 a i 是否在當前區間內。若 a i 在bitset1中位上的值為true,那 n a i 在bitset2中那一位上也為true。關於操作一,其實就是詢問 是否有兩個...
luogu3674 小清新人渣的本願
目錄本題解法 給定長度為 n 數列 a m 組查詢,問 l,r 內是否有兩個數之和 差 積為 x n,m le 10 5,max le10 5 傳送門我們先來介紹一下 bitset 如果您熟悉bitset請跳至下一章 bitset十分神奇,你可以把它看作乙個支援整體操作的bool陣列。bitset的...
Luogu3674小清新人渣的本願
給你乙個序列a,長度為n,有m次操作,每次詢問乙個區間 bitset 的原理是將一大堆值為 0 1 的數壓成乙個數。通過 i x 等操作,我們可以快速訪問 i 陣列右移 x 位後的狀態 即只剩右數 n x 個值。bitset 陣列可以當作乙個數來看待並進行 等操作 詳見高斯消元總結 還有一些 stl...