ABC426不太全题解
2025-10-09 13:47:11
发布于:广东
前话:这是一篇迟来了5天的题解[狗头保命]
A&B:
若只题 不讲。
C:
个人难度:橙上 黄下
暴力算法:
模拟全过程,时间复杂度 ,显然超时。
正解算法:
注意到本题最大的版本仅为 ,我们考虑从这里入手。
由于题目只让我们求升级的台数,我们可以定义数组 ,其中 表示操作系统版本为 的数量。
再定义变量 表示当前最小版本,对于每次询问,需要更新的数量就是 。随后将 加上前式,并且更新 。
最后输出答案即可。
#include<bits/stdc++.h>
using namespace std;
int p[1000009];
int main(){
int n,q,cur = 1;
cin>>n>>q;
for(int i = 1;i<=n;++i) p[i] = 1;
while(q--){
int x,y;
cin>>x>>y;
int ans = 0;
while(cur<=x){
ans+=p[cur];
p[y]+=p[cur];
cur++;
}
cout<<ans<<endl;
}
}
时间复杂度:
后话:
后面的还没写,所以目前来说这是一篇ABC426C题解。
这里空空如也
有帮助,赞一个