bzoj
根據尤拉定理遞迴計算(類似上帝與集合的正確用法)
所以我們可以用線段樹維護區間最少的被更新的多少次
如果超過了
φ 的限制
就不用再計算了
如果需要計算就每次暴力算
這樣的複雜度o(
nlog
2)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define lson (now<<1)
#define rson (now<<1|1)
#define max 80000
#define ll long long
inline
int read()
int a[max],c,p,n,m;
ll phi[max],tot;
ll phi(ll x)
if(x>1)ret=ret/x*(x-1);
return ret;
}ll fpow(ll a,ll b,ll p)
if(fl)s+=p;
return s;
}struct nodet[max<<2];
inline
void build(int now,int l,int r)
int mid=(l+r)>>1;
build(lson,l,mid);build(rson,mid+1,r);
t[now].sum=(t[lson].sum+t[rson].sum)%p;
}ll calc(int l,int r,ll x,ll p)
void modify(int now,int l,int r,int l,int r)
int mid=(l+r)>>1;
if(l<=mid)modify(lson,l,mid,l,r);
if(r>mid)modify(rson,mid+1,r,l,r);
t[now].tt=min(t[lson].tt,t[rson].tt);
t[now].sum=(t[lson].sum+t[rson].sum)%p;
}int query(int now,int l,int r,int l,int r)
int main()
phi[++tot]=1;
while(m--)
return
0;}
BZOJ4869 相逢是問候 線段樹 尤拉定理
直接上傳送門 bzoj4869 相逢是問候 題意 維護數列區間和,帶有將原數a i 修改為ca i 的操作 演算法 線段樹 tex尤拉定理 思路 當 c p 時下式成立 cx cx p p mo dp 證明 大佬 微小的尤拉定理ext證明 若我們對乙個值x反覆進行該操作,簡單來看過程如下 cc x ...
BZOJ4869 相逢是問候(線段樹,尤拉定理)
bzoj 根據尤拉定理遞迴計算 類似上帝與集合的正確用法 所以我們可以用線段樹維護區間最少的被更新的多少次 如果超過了 varphi 的限制 就不用再計算了 如果需要計算就每次暴力算 這樣的複雜度 o nlog 2 include include include include include in...
4869 Shoi2017 相逢是問候
4869 shoi2017 相逢是問候 time limit 40 sec memory limit 512 mb submit 440 solved 124 submit status discuss description informatikverbindetdichundmich.資訊將你我...