//4288 Coder 线段树 vector偷懒做法
/*
题意:给一个序列,每次有3种操作:
1、往有序集合中增加一个原素x
2、把集合中的元素x
3、查询集合中下标%5=3的元素的总和
思路:vector
*/
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
using namespace std;
char op[5];
int n,x;
__int64 ans;
vector<int>V;
int main(){
int i;
while(scanf("%d",&n)!=EOF){
V.clear();
while(n--){
scanf("%s",op);
if(op[0] == 's'){
ans = 0;
for(i = 2; i < V.size(); i+=5)
ans += V[i];
printf("%I64d\n",ans);
}
else{
scanf("%d",&x);
if(op[0] == 'a')
V.insert(lower_bound(V.begin(),V.end(),x),x);
else
V.erase(lower_bound(V.begin(),V.end(),x));
}
}
}
return 0;
}
HDOJ 4288 Coder 线段树 vector偷懒做法
最新推荐文章于 2020-03-29 23:28:00 发布
本文介绍了一种使用C++标准库中的vector来实现动态集合的操作方法。主要针对三种操作:插入元素、删除元素以及求解特定下标元素的总和。通过线段树的思想进行优化,适用于需要频繁进行集合操作的场景。
699

被折叠的 条评论
为什么被折叠?



