专栏文章
[CF1798C] Candy Store 题解
CF1798C题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min9gce9
- 此快照首次捕获于
- 2025/12/01 22:44 3 个月前
- 此快照最后确认于
- 2025/12/01 22:44 3 个月前
因为整个序列都要被划分,且显然这个区间长度具有单调性,于是考虑一段区间 能做到 相同的条件。
显然,,于是 ,取最少的限制,即 ,于是有 ,进一步得到 。
如果觉得太跳跃了,可以从质因子角度出发,对于一个质数 若 拆出来 , 拆出来 ,则 ,对于每个 都拆出来 的显然是 。
然后直接维护 和 就可以了,时间复杂度 。
code
CPP#include<bits/stdc++.h>
#define pb emplace_back
#define mp make_pair
using namespace std;
typedef unsigned long long ll;
typedef __int128 LL;
const ll maxn=200007,ee=1e18;
ll n,a[maxn],b[maxn],g,l,ans;
int main(void){
//freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
ios::sync_with_stdio(0),cin.tie(0);
ll T=1; cin>>T;
for(;T--;){
cin>>n,ans=1,g=0,l=1;
for(ll i=1;i<=n;i++) cin>>a[i]>>b[i];
for(ll i=1;i<=n;i++){
g=__gcd(g,a[i]*b[i]),l=l*b[i]/__gcd(l,b[i]);
if(g%l) ans++,g=a[i]*b[i],l=b[i];
}
cout<<ans<<"\n";
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...