zoukankan      html  css  js  c++  java
  • 洛谷:P2952 [USACO09OPEN]牛线Cow Line:题解

    题目链接:https://www.luogu.org/problemnew/show/P2952

    分析:

    这道题非常适合练习deque双端队列,~~既然是是练习的板子题了,建议大家还是练练deque,下面来简单讲解一下deque的一些操作。

    clear()clear():清空队列

    pushpush_back()back():从尾部插入一个元素。

    pushpush_front()front():从头部插入一个元素。

    deque双端队列的先进就在这里,它可以两端都支持同样的操作。

    size()size():返回队列元素个数

    front()front():返回队列首部元素。

    back()back():返回尾部元素。

    poppop_back()back():弹出队尾元素。

    poppop_front()front():弹出队首元素。

    empty()empty():检查队列是否为空。

    ......
    ......
    ......
    然后输出的方法多种多样,我选择使用迭代器,具体详见代码。

    代码:

    #include<cstdio>
    #include<deque>
    using namespace std;
    deque<int>q;
    int main()
    {
    	int s;
    	scanf("%d
    ",&s);
    	int cnt=0;
    	for(int j=1;j<=s;j++)
    	{
    		char c1,c2;
    		int c3;
    		scanf("%c %c",&c1,&c2);
    		if(c1=='A')
    		{
    			if(c2=='L')
    			{
    				q.push_front(++cnt);
    			}
    			else
    			{
    				q.push_back(++cnt);
    			}
    			if(j!=s)
    			scanf("
    ");
    		}
    		else
    		{
    			scanf("%d",&c3);
    			if(j!=s)
    			scanf("
    ");
    			if(c2=='L')
    			{
    				for(int i=1;i<=c3;i++)
    				{
    					q.pop_front();
    				} 
    			}
    			else
    			{
    				for(int i=1;i<=c3;i++)
    				q.pop_back();
    			}
    		}
    	}
    	deque<int>::iterator it=q.begin();
    	for(it=q.begin();it!=q.end();it++)
    	{
    		printf("%d
    ",*it);
    	}
    	return 0;
    }
    
  • 相关阅读:
    实时监听输入框值变化的完美方案:oninput & onpropertychange
    展示两行,超出用。。。表示
    修改下拉框滚动条样式
    js单线程工作
    锚点
    火狐图片乱码
    解决重复提交的几种方法
    forward和redirect的区别
    form表单刷新自动提交
    addEventListener和attachEvent的区别
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10834264.html
Copyright © 2011-2022 走看看