2017CCPC 杭州 J. Master of GCD【差分標記/線段樹/GCD】
阿新 • • 發佈:2018-08-24
include bits puts 一個 ear size assert amp 就是
給你一個n個初始元素都為1的序列和m個詢問q。
詢問格式為:l r x(x為2or3)
最後求1~n所有數的GCD
GCD:把每個數分別分解質因數,再把各數中的全部公有質因數提取出來連乘,所得的積就是這幾個數的最大公約數。
#include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include<iostream> #include<cstring> #include<set> #include<queue> #include<algorithm> #include<vector> #include<map> #include<cctype> #include<stack> #include<sstream> #include<list> #include<assert.h> #include<bitset> #include<numeric> #define debug() puts("++++") #define gcd(a,b) __gcd(a,b) #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define fi first #define se second #define pb push_back #define sqr(x) ((x)*(x)) #define ms(a,b) memset(a,b,sizeof(a)) #define sz size() #define be begin() #define pu push_up #define pd push_down #define cl clear() #define lowbit(x) -x&x #define all 1,n,1 #define mod 998244353 #define pi acos(-1.0) #define rep(i,x,n) for(int i=(x); i<(n); i++) using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> P; const int INF = 1<<30; const int maxn = 1e5+3; const double eps = 1e-8; const int dx[] = {-1,1,0,0,1,1,-1,-1}; const int dy[] = {0,0,1,-1,1,-1,1,-1}; int dir[2]={-1,1}; const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; LL t,n,m; LL Pow(LL a, LL b) { LL res=1; while(b) { if(b&1) res=(res%mod * a%mod)%mod; a = a%mod*a%mod; b>>=1; } return res%mod; } LL a[maxn],b[maxn]; int main() { scanf("%lld",&t); while(t--) { ms(a,0),ms(b,0); scanf("%lld%lld",&n,&m); while(m--) { LL l,r,x; scanf("%lld%lld%lld",&l,&r,&x); if(x==2) { a[l]++,a[r+1]--; //差分標記因子含有2的數、區間加維護2or3的操作數 } else { b[l]++,b[r+1]--; } } LL m1=a[1],m2=b[1]; for(int i=2;i<=n;i++) { a[i]+=a[i-1]; //前綴和維護序列本身,而序列記錄2的操作數即個數,得到具體每個數的操作數 b[i]+=b[i-1]; m1=min(m1,a[i]); //2的最小操作數 m2=min(m2,b[i]); } LL ans = (Pow(2,m1)%mod*Pow(3,m2)%mod)%mod; printf("%lld\n",ans); } } /* 2 5 3 1 3 2 3 5 2 1 5 3 6 3 1 2 2 5 6 2 1 6 2 6 2 【題意】 【類型】 【分析】 【時間復雜度&&優化】 【trick】 【數據】 */
2017CCPC 杭州 J. Master of GCD【差分標記/線段樹/GCD】