[TJOI2018]數學計算
[TJOI2018]數學計算
思路一:直接模擬(會因為爆 l o n g l o n g long\ long long long的問題導致程式碼非常複雜)
思路二:考慮線段樹。建立一棵線段樹,其葉子節點都是對應的乘數,每個非葉子節點的值為其左右兒子的值的乘積對 mod \text{mod} mod 取模的值。這樣,任意時候都有 x = x= x=該線段樹的根的值。操作 1 1 1可以直接上,操作 2 2 2可以看做是把第 t t t次的乘數改為 1 1 1。然後考慮使用線段樹分治的思想處理即可。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=100000+50;
inline int read(){
int cnt=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
while(isdigit(c)){cnt=(cnt<<3)+(cnt<<1)+(c^48);c=getchar();}
return cnt*f;
}
struct tree{int val;}tr[N<<2];
int q,mod,t,op,m;
inline void pushup(int p){tr[p].val=(tr[p<<1].val%mod*tr[p<<1|1].val%mod)%mod;}
void build(int p,int l,int r){
if(l==r) {tr[p].val=1;return;}
int mid=(l+r)>>1;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
pushup(p);
return;
}
void modify(int p,int l,int r,int x,int v){
if(l==r) {tr[p].val=v;return;}
int mid=(l+r)>>1;
if(x<=mid) modify(p<<1,l,mid,x,v);
else modify(p<<1|1,mid+1,r,x,v);
pushup(p);return;
}
signed main(){
t=read();
while(t--){
q=read(),mod=read();build(1,1,q);
for(int i=1;i<=q;++i){
op=read();m=read();
if(op==1) modify(1,1,q,i,m),printf("%lld\n",tr[1].val);
else modify(1,1,q,m,1),printf("%lld\n",tr[1].val);
}
}
return 0;
}
相關文章
- P4588 [TJOI2018] 數學計算
- 用於計算數學統計的 PHP 包PHP
- 一個數學表示式的計算
- 美賽整理之Matlab的工程數學計算學習筆記(高等數學)Matlab筆記
- 只有計算機才能完成的小學數學作業計算機
- POJ 1113 Wall(思維 計算幾何 數學)
- 計算機計算小數除法的陷阱計算機
- Python數學運算Python
- 計算Linux天數Linux
- 計算素數【Java】Java
- 數學計算軟體:Wolfram Mathematica for Mac 中文版Mac
- 【財富空間】計算機起源的數學思想計算機
- [招募] 加入我們一起學習 計算機數學吧計算機
- 【招募】加入我們一起學習 計算機數學吧計算機
- OpenCV計算機視覺學習(2)——影像算術運算 & 掩膜mask操作(數值計算,影像融合,邊界填充)OpenCV計算機視覺
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 計算機基礎:離散數學和完備性計算機
- 高精度數學運算
- 【重學計算機】計算機組成原理計算機
- python計算對數值Python
- MATLAB R2023a 數學計算和程式設計軟體 mac版Matlab程式設計Mac
- BZOJ5335 : [TJOI2018]智力競賽
- 計算機系統002 – 數值運算計算機
- [轉載] python數學計算模組之math常用函式學習使用Python函式
- 百行以內實現複雜數學表示式計算
- MATLAB R2022a for Mac(專業程式設計和數學計算軟體)MatlabMac程式設計
- Mac專業程式設計和數學計算軟體:MATLAB R2022aMac程式設計Matlab
- 偏相關係數計算
- NumPy科學計算庫
- JS-計算日期差值;計算日期之間的月數JS
- 小白怎麼學習雲端計算?雲端計算學習大綱
- 學習雲端計算怎麼入門,如何學習雲端計算?
- 【數值計算方法】數值積分&微分
- 計算機、數學、運籌學等領域的32個重要演算法計算機演算法
- MATLAB R2022b Mac(專業程式設計和數學計算軟體)MatlabMac程式設計
- 計算機組成與體系結構-數值表示範圍-浮點數計算計算機
- 雲端計算應該學些什麼?Linux雲端計算要學多久Linux
- 零基礎如何學習雲端計算?雲端計算學習教程