題面:題目太長怎麼往上放σ(☉▽☉"a
直接說做法吧
要問能不能使這一段區間內的數連續
首先想到的就是最大值減最小值是不是等於區間長度
但是元素可能是重複的
所以我們還要記乙個區間平方和
如果上面的情況已經不符合就直接輸出
否則再判斷一下區間平方和是不是相同
這樣就保證正確了
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define a 10000010
#define b 2010
using
namespace std;
typedef
long
long ll;
const
int inf =
1e9+
100;
struct nodetree[a]
;int n, m, opt, a, b, mxx, mxn, ttt;
void
update
(int k)
void
build
(int k,
int l,
int r)
int m =
(l + r)
>>1;
build
(k <<
1, l, m)
;build
(k <<1|
1, m +
1, r)
;update
(k);
}void
add_point
(int k)
int m =
(tree[k]
.l + tree[k]
.r)>>1;
if(a <= m)
add_point
(k <<1)
;else
add_point
(k <<1|
1);update
(k);
}void
ask_interval
(int k)
int m =
(tree[k]
.l + tree[k]
.r)>>1;
if(a <= m)
ask_interval
(k <<1)
;if(b > m)
ask_interval
(k <<1|
1);}
bool
check
(int l,
int r,
int ans)
intmain
(int argc,
char
const
*argv)
if(check
(mxn, mxx, ttt)
)puts
("damushen");
else
puts
("yuanxing");
}}return0;
}
luogu P3792 由乃與大母神原型和偶像崇拜
無 n nn個數,若干組詢問,每一次詢問 l,r l,r l,r 中是否經過排序可以形成值域嚴格上公升的序列。顯然用分塊的思想 記錄上乙個和當前相等的數是否在當前塊外 很容易實現,參見hh的項鍊 有些類似,好像不是一回事,但我找不到之前做的這樣的題了 但時間複雜度卻承受不了。於是想到了線段樹來維護,...
luogu P3792 由乃與大母神原型和偶像崇拜
題面傳送門 可以算一道線段樹維護hash的模板題了吧。hash要滿足兩個條件 相同的數hash值一定一樣與hash衝突盡量少。這道題hash序列可以用冪次方來hash 然後用線段樹隨便維護一下就好了。實現 include include define max a,b a b a b define m...
P3792 由乃與大母神原型和偶像崇拜
題意 給你n個數,q次詢問,每次詢問 有 題解 如果這題不帶修改,很多人都會想到,直接用主席樹維護乙個最大值最小值,然後查詢區間不同數的個數,如果不同數的個數等於maxn minn 1 那麼這個區間一定合法。主席樹比較麻煩?那就用線段樹維護乙個最大乙個最小值,乙個這個數第一出現的位置的最小值。如果 ...