傳送門:
【題解】
區間開根號,由於每個數被開根號不會很多次就變成1,每次我們暴力開根下去,同時記錄s[x]表示x這個區間內是不是全是1,如果是就不用開下去了
這樣保證了每個數最多被開不多次。
# include # includeview code# include
# include
//# include
using
namespace
std;
typedef
long
long
ll;typedef
long
double
ld;typedef unsigned
long
long
ull;
const
int m = 5e5 + 10
;const
int mod = 1e9+7
;# define rg register
# define st
static
intn;
intseq[m];
ll w[m];
bool
s[m];
inline
void build(int x, int l, int
r)
int mid = l+r>>1
; build(x
<<1
, l, mid);
build(x
<<1|1, mid+1
, r);
w[x] = w[x<<1] + w[x<<1|1];}
inline
void change(int x, int l, int r, int l, int
r)
int mid = l+r>>1
;
if(r <= mid) change(x<<1
, l, mid, l, r);
else
if(l > mid) change(x<<1|1, mid+1
, r, l, r);
else change(x<<1, l, mid, l, mid), change(x<<1|1, mid+1, r, mid+1
, r);
w[x] = w[x<<1] + w[x<<1|1
]; s[x] = s[x<<1] & s[x<<1|1
]; }
inline ll query(
int x, int l, int r, int l, int
r) int
main()
else change(1, 1
, n, l, r);
}return0;
}
BZOJ3211 花神遊歷各國
3211 花神遊歷各國 time limit 5 sec memory limit 128 mb submit 1144 solved 416 submit status discuss description input output 每次x 1時,每行乙個整數,表示這次旅行的開心度 sample...
bzoj3211 花神遊歷各國
其實這是一道sb題 哦不其實是兩道2333333 還有3038也是同一題 然而在寫3038的時候由於資料太水直接就a掉了。剛剛拿之前的code交上去就wa啦。不能判斷區間和是否 r l 1因為會出現0 所以要開多乙個東西表示這個區間還有多少個數不會再改變了 每個數可以開方的次數是很小的,就當做是常數...
bzoj 3211 花神遊歷各國
每次x 1時,每行乙個整數,表示這次旅行的開心度 4 1 100 5 5 51 1 2 2 1 2 1 1 2 2 2 3 1 1 4 10111 11對於100 的資料,n 100000,m 200000 data i 非負且小於10 9 對於這個開方,一開始yy了好久,後來發現,10 9的數頂多...