//給出n個資料 , 對於每次[l,r]
//操作,s加上[l,r]區間的所有數
//之和,並且將[l,r]區間的所有數
//都平方
//輸出s%9223372034707292160
//打表可以發現對於每個數在做一定操作
//後其值一定不變
//所以只需要維護乙個標記就行
#include
#include
#include
using
namespace
std ;
const
int maxn = 1e5+10 ;
typedef
unsigned
long
long ll ;
const ll mod = 9223372034707292160 ;
#define left v<<1
#define right v<<1|1
struct node
tree[maxn<<2] ;
ll mul(ll a , ll b)
a += a ;
if(a >= mod)a-=mod ;
b >>= 1 ;
}return c ;
}void push_up(int v)
void build(int l , int r , int v)
int mid = (l + r) >> 1 ;
build(l , mid , left) ;
build(mid+1 , r , right) ;
push_up(v) ;
}ll update(int l , int r , int v)
int mid = (tree[v].l + tree[v].r) >> 1 ;
ll ans = 0 ;
if(l <= mid)
if(r > mid)
push_up(v) ;
return ans ;
}int main()
}return
0 ;}
HDU5239 線段樹,找規律,快速乘法
題意是給n個數,m個詢問,每次輸出之前的值加上此時詢問區間的值,然後區間的數字都平方。坑點是模數很大,需要把平方轉化成類似快速冪的加法。include using namespace std define maxn 111111 define pl c 1 define pr c 1 1 defin...
hdu 預處理 線段樹)
給n個數,m個詢問,問任意區間內與其它數互質的數有多少個 比如3個數1 2 4,詢問 1,3 那麼答案是1 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...
初步線段樹 hdu1166
include include includeusing namespace std define max 50000 struct node node maintree 4 max void settree int n,int l,int r int main printf case d n tt...