HDU4288-STL模拟

给你插入,删除的操作,维护一个降序排列的表,查询所有下标模5等于3的元素和。

2012年成都网络赛的一道签到题。但是还是搜了题解才做出来了,意志不坚定啊。。。

这道题给10s的时间,做法多种多样。

最暴力的方法是维护一个数组,插入删除靠移动元素实现,巧妙的姿势可以用8点多秒通过。注意G++过不了但C++可以过。

还可以用vector+lower_bound 也能过

我还在网上看到了线段树的做法,然而并没有看懂。

#include <algorithm>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#include <set>
#include <map>

using namespace std;

int N,M,T,save[100010],len;

int main()
{
    while(~scanf("%d",&N))
    {
        char op[5];
        int it,len = 0,i;
        for(int k=0;k<N;k++)
        {
            scanf("%s",op);
            if(op[0] == ‘a‘){
                scanf("%d",&it);
                for(i = len;i > 0;i--)
                {
                    if(save[i-1] > it)
                        save[i] = save[i-1];
                    else
                        break;
                }
                save[i] = it;
                len++;
            }
            else if(op[0] == ‘d‘){
                scanf("%d",&it);
                for(i = 0;i < len;i++)
                {
                    if(save[i] == it)
                        break;
                }
                for(;i < len;i++) save[i] = save[i+1];
                len--;
            }
            else
            {
                long long ans = 0;
                for(int i = 2;i < len;i+=5)
                {
                    ans += save[i];
                }
                printf("%lld\n",ans);
            }
        }
    }

}
时间: 2024-08-03 23:50:59

HDU4288-STL模拟的相关文章

HDU 4028 The time of a day STL 模拟题

暴力出奇迹.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; #define ll __int64 #define N 42 ll n,m,ans;

HDU 4022 Bombing STL 模拟题

手动模拟.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; #define N 10100 #define inf 1000000010 map<

stl+模拟 CCF2016 4 路径解析

1 // stl+模拟 CCF2016 4 路径解析 2 // 一开始题意理解错了.... 3 4 #include <iostream> 5 #include <string> 6 #include <vector> 7 using namespace std; 8 void fre() {freopen("in.txt","r",stdin);} 9 vector<string> l; 10 int main(){

【STL+模拟】UVa 506 - System Dependencies

System Dependencies  Components of computer systems often have dependencies--other components that must be installed before they will function properly. These dependencies are frequently shared by multiple components. For example, both the TELNET cli

HDU-4961 Boring Sum STL模拟

给出一个序列A,对于A里面的每个元素,左边最近的能被它整除的元素记为B序列对应位置的,右边最近的是它的整数倍的元素记为C序列对应位置,找不到的记它本身,最后算出对应位置B*C的总和. 容器模拟,按顺序扫一遍,每次如果有符合条件的取出来,即为最近的.最后把它的下标放到对应位置的容器中,然后倒序求一遍,最后求和. #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #

HDU-4841 圆桌问题 STL模拟约瑟夫问题

中文题,题意一看就是卧槽,这不约瑟夫么,然后脑子一抽就用了链表写,然后果然T了,最后用Vector模拟的约瑟夫问题. #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <queue> #include <iomanip> #include <algorithm> #include <vector>

CCF 201403-3 命令行选项 (STL模拟)

问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 不用对它进行处理.在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数. 选项有两类:带参数的选项和不带参数的选项.一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b".而带参数选项则由两个由空格分隔的字符串构成,前者的格式要求

CCF 201509-3 模板生成系统 (STL+模拟)

问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多.为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统. 模板是包含特殊标记的文本.成成用到的模板只包含一种特殊标记,格式为 {{ VAR }},其中 VAR 是一个变量.该标记在模板生成时会被变量 VAR 的值所替代.例如,如果

CCF 201403-2 窗口 (STL模拟)

问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容. 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变.如果你点击的位置不属于任何窗口,则系统会忽略你这次点击. 现在我们希望你写一个程序模拟点击窗口的过程. 输入格式 输入的第一行有两个正整数,即 N 和 M.(

HDU5071 - Chat(STL模拟)

题目描述 略... 题解 现场赛的时候真是脑残...用splay去写..写完发现调试不出来...然后才发现数据范围才5000...不过那时候只有40分钟了..用数组模拟了速度敲了一发.写完只剩10几分钟了...最终也没调试出来..赛后想了想发现此题用deque真是巨好写.. 代码: bye是个坑.必须得在队列里并且是说过话的.. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include&