【题目】 http://acm.hdu.edu.cn/showproblem.php?pid=4699

【报告】

模拟题吧,本身不是很难。

最初的想法是用Splay tree写,然后疯掉了。苏牛说2B,直接两个栈就能搞定的还用Splay tree,然我我无奈了。。。

用两个栈维护,一边是光标左边,一边是光标右边。当光标左边的栈插入或者删除的时候同时维护栈底到栈顶的和还有最大和,就O了。

【程序】

// Task: 4699 Editor
// Designer: Rsky 2013/08/27
#include
#include
#include
#include
#include
#include
using namespace std;
char blank[100];
stack a,b;  //  A:光标前,B:光标后,
int an,bn;
vector s,m; //  S:1~当前的和,M:1~当前的最大和
inline void insert(int x)   // 插入
{
    a.push(x);       // 压入左边栈
    s.push_back(x+s[s.size()-1]);  // 计算全部和
    m.push_back(max(s[s.size()-1],m[m.size()-1]));  // 计算最大和
    an++;
}
inline void erase()         // 删除
{
    if (an>0)
    {
        a.pop();
        s.pop_back();
        m.pop_back();
        an--;
    }
}
inline void tleft()         // 左移
{
    if (an>0)
    {
        b.push(a.top());    // 左边栈顶入右边栈
        bn++;
        erase();           // 删掉左边栈顶
    }
}
inline void tright()        // 右移
{
    if (bn>0)
    {
        insert(b.top());
        b.pop();
        bn--;
    }
}
inline void query(int x)    // 询问
{
   // cout << m[x] << endl;
    printf("%d\n",m[x]);
}
int main()
{
    int n;
    while (scanf("%d",&n)!=EOF)
    {
       // gets(blank);   // 读掉行尾空格
        char ch;
        int x;
        while (!a.empty()) a.pop();
        while (!b.empty()) b.pop();
        s.clear();m.clear();           // 清空
        a.push(0);b.push(0);s.push_back(0);m.push_back(-2147483647); // 栈底,防溢出
        an=bn=0;

【HDOJ】4699 Editor_天涯浪子_新浪博客相关推荐

  1. 【HDOJ】4602 Partition_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...

  2. 【HDOJ】1008 Elevator_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...

  3. 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1022 [报告] 模拟,直接模拟一个栈的运行就行了. [程序] // Task: 1022 Train P ...

  4. 【HDOJ】1003 Max Sum_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...

  5. 【HDOJ】4768 Flyer_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...

  6. 【HDOJ】4704 Sum_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...

  7. 【HDOJ】1015 Safecracker_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...

  8. 【HDOJ】1020 Encoding_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...

  9. 【HDOJ】5007 Post Robot_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=5007 [报告] 闲来无事刷水题-- 直接暴力判断是否相同就行了,连KMP都不用.简单粗暴. [程序] ...

最新文章

  1. 【全网最短】实现倒计时:时分秒的功能
  2. 敏捷开发必备的管理工具
  3. Python图片操作-psd_tools:将psd文件转换成BMP
  4. c++ PVOID封装成C#
  5. Zabbix如何实现Server和Agent的通信加密
  6. Mysql data type(数据类型)
  7. [独家放送]Unity2020规划预览,可视化编程又双叒叕来了!
  8. jQuery特效:实现瀑布流
  9. 删除数据清理oracle表空间,oracle删除(释放)数据文件/表空间流程
  10. 分享27个高质量前端大佬的油管频道(下)
  11. 耳机插在的电脑上没有声音
  12. vtp服务器作用,VTP
  13. ppt将画好的箭头改为直线
  14. 计算机大赛总结发言稿,学校技能比赛总结发言稿
  15. 【stm32】单片机学习——小车的开环控制
  16. Android 歌词滚动效果(歌词逐个与逐渐变色)可换行
  17. 支付10秒倒计时链接页面跳转
  18. java操作redis
  19. 若依前后端分离版本集成CAS Server5.3
  20. 读《互联网创业的四种玩家》有感

热门文章

  1. 微信怎么建群?微信怎样建群拉人?微信建群拉人是这样做的…
  2. Windows (Server) 开机启动批处理文件
  3. LPC54114双核使用指南翻译 - 使用MCUXPresso进行双核调试
  4. 历史上最著名计算机病毒,似乎都成了我们的回忆
  5. golang logrus日志框架
  6. 时间放大器——简介与基本硬件结构
  7. UNITY HTTP GET 人机对诗APP (流星程序集之十七)
  8. 解密|小游戏与H5游戏的不同之处
  9. 交通流仿真建模 | 由数据驱动的建模方法
  10. keil中c99mode(变量可以定义在函数任意位置)