您的位置:首页 > 其它

HDU 4288 Coder

2013-01-12 16:25 253 查看
题目链接:点击打开链接

题意:给你个数N,有三种操作,add是加数x到集合里,del是把集合数x删除(下标也要相对应变化),sum是把下标对5取余为3的加起来,输出sun;

思路:这也是一道线段树的题,哎哎,线段树只会做很简单的,有只好用STL容器啦。

#include<iostream>
#include<vector>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
vector<int>s;
char str[5];
int n;
int main()
{
int len,val,i;
vector<int>::iterator it;
while(scanf("%d",&n)!=EOF)
{
len=0;
s.clear();
while(n--)
{
scanf("%s",str);
if(str[0]=='a')
{
len++;
scanf("%d",&val);
it=lower_bound(s.begin(),s.end(),val);
s.insert(it,val);
}
else
if(str[0]=='d')
{
len--;
scanf("%d",&val);
it=lower_bound(s.begin(),s.end(),val);
s.erase(it);
}
else
{
__int64 sum=0;
for(i=2;i<len;i+=5)
sum+=s[i];
printf("%I64d\n",sum);
}
}
}
return 0;
}

发现c++的STL真的很重要,学了很有用,这题一定也要用线段树做一遍。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: