我是靠谱客的博主 帅气猫咪,最近开发中收集的这篇文章主要介绍HDU4288 Coder,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目大意:add即像数字串中添加数字,del n 删除数字串中值为n的元素。sum 按照所给公式求和。

       坑点:所给的数字是由小到大排序的,需要注意的是后面如果add一个数字,需要放到合适的位置。比如 3,4,7,9, 如果add 6,6需要放在4,7之间。

  这道题一直超时,关键在删除值为n的元素的时候会超时,因为需要遍历。 所以使用二分搜索找到插入n的位置以及删除n的位置。

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
int N;
vector<int> vc;
void sum(){
long long summ=0;
for(int i=2;i<vc.size();i+=5){
summ+=vc[i];
}
cout<<summ<<endl;
}
void del(int n){
vector<int>::iterator it;
it=lower_bound(vc.begin(),vc.end(),n);
vc.erase(it);
}
void add(int n){
vector<int>::iterator it;
it=lower_bound(vc.begin(),vc.end(),n);
vc.insert(it,n);
}
void inpt(){
string str;
long long
n;
cin>>str;
if(str=="sum") sum();
else
if(str=="add") {
scanf("%d",&n);
add(n);
}
else{
scanf("%d",&n);
del(n);
}
}
int main()
{
while(scanf("%d",&N)!=EOF){
vc.clear();
for(int i=0;i<N;i++){
inpt();
}
}
return 0;
}


 

最后

以上就是帅气猫咪为你收集整理的HDU4288 Coder的全部内容,希望文章能够帮你解决HDU4288 Coder所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部