HDU 5929 Basic Data Structure(双端队列)

CCF权限查询 问题描述   授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个模块的操作权限。   本题中的授权机制是这样设计的:每位用户具有若干角色,每种角色具有若干权限。例如,用户 david 具有 manager 角色,manager 角色有 crm:2 权限,则用户 david 具有 crm:2 权限,也就是 crm 类权限的第 2 等 阅读详情

Basic Data Structure

Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2849    Accepted Submission(s): 628


Problem Description
Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operations of stack:

∙  PUSH x: put x on the top of the stack, x must be 0 or 1.
∙  POP: throw the element which is on the top of the stack.

Since it is too simple for Mr. Frog, a famous mathematician who can prove "Five points coexist with a circle" easily, he comes up with some exciting operations:

∙ REVERSE: Just reverse the stack, the bottom element becomes the top element of the stack, and the element just above the bottom element becomes the element just below the top elements... and so on.
∙ QUERY: Print the value which is obtained with such way: Take the element from top to bottom, then do  NAND operation one by one from left to right, i.e. If   atop,atop−1,⋯,a1  is corresponding to the element of the Stack from top to the bottom,  value=atop  nand  atop−1  nand ... nand  a1 . Note that the Stack  will not change after QUERY operation. Specially, if the Stack is empty now,you need to print ” Invalid.”(without quotes).

By the way,  NAND is a basic binary operation:

∙  0 nand 0 = 1
∙  0 nand 1 = 1
∙  1 nand 0 = 1
∙  1 nand 1 = 0

Because Mr. Frog needs to do some tiny contributions now, you should help him finish this data structure: print the answer to each QUERY, or tell him that is invalid.
 

Input
The first line contains only one integer T ( T≤20 ), which indicates the number of test cases.

For each test case, the first line contains only one integers N ( 2≤N≤200000 ), indicating the number of operations.

In the following N lines, the i-th line contains one of these operations below:

∙  PUSH x (x  must be 0 or 1)
∙  POP
∙  REVERSE
∙  QUERY

It is guaranteed that the current stack will not be empty while doing POP operation.
 

Output
For each test case, first output one line "Case #x:w, where x is the case number (starting from 1). Then several lines follow,  i-th line contains an integer indicating the answer to the i-th QUERY operation. Specially, if the i-th QUERY is invalid, just print " Invalid."(without quotes). (Please see the sample for more details.)
 

Sample Input
  
2 8 PUSH 1 QUERY PUSH 0 REVERSE QUERY POP POP QUERY 3 PUSH 0 REVERSE QUERY
 

Sample Output
  
Case #1: 1 1 Invalid. Case #2: 0
Hint
In the first sample: during the first query, the stack contains only one element 1, so the answer is 1. then in the second query, the stack contains 0, l (from bottom to top), so the answer to the second is also 1. In the third query, there is no element in the stack, so you should output Invalid.
 

Source
 


题意:
给你一个栈,让你进行如上四个操作。

POINT:
反转不需要真正反转,只要标记一下那边变成了Top就行了。
计算的时候,只要从栈顶往下找到最后一个0,然后在计算下面有多少个1就行了。
注意栈顶是就是最后一个0的情况,那么这个0和下一个1组合变为1.

#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <math.h>
#include <string.h>
#include <map>
using namespace std;
//#define LL long long
const int maxn = 300000*2;
int a[maxn];

int main()
{
    int T;
    int cas=1;
    deque<int>q;
    for(scanf("%d",&T);T--;cas++){
        q.clear();
        int n;scanf("%d",&n);
        int now=1;
        int l=300001,r=300000;
        printf("Case #%d:\n",cas);
        for(int i=1;i<=n;i++){
            char s[10];
            scanf("%s",s);
            if(!strcmp(s, "PUSH")){
                int x;scanf("%d",&x);
                if(now){
                    ++r;
                    if(!x) q.push_back(r);
                    a[r]=x;
                }else{
                    --l;
                    if(!x) q.push_front(l);
                    a[l]=x;
                }
            }else if(!strcmp(s, "POP")){
                if(now){
                    if(!a[r]){
                        q.pop_back();
                    }
                    r--;
                }else{
                    if(!a[l]){
                        q.pop_front();
                    }
                    l++;
                }
            }else if(!strcmp(s, "REVERSE")){
                now=now^1;
            }else{
                if(l>r) printf("Invalid.\n");
                else if(now){
                    if(q.empty()){
                        printf("%d\n",(r-l+1)%2);
                        continue;
                    }
                    if(q.front()==r){
                        printf("%d\n",(r-l)%2);
                    }else{
                        printf("%d\n",(q.front()-l+1)%2);
                    }
                }else{
                    if(q.empty()){
                        printf("%d\n",(r-l+1)%2);
                        continue;
                    }
                    if(q.back()==l){
                        printf("%d\n",(r-l)%2);
                    }else{
                        printf("%d\n",(r-q.back()+1)%2);
                    }
                }
            }
        }
    }

    return 0;
}



Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置 本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。 阅读详情

相关推荐

ARM芯片内部的高速公路:手把手教你用AMBA Designer配置NIC-400互连控制器

本文详细介绍了如何使用AMBA Designer工具配置ARM芯片中的NIC-400互连控制器,涵盖从基础拓扑构建到高级QoS设置的完整流程。通过实际案例演示,帮助开发者掌握AXI协议下的高效片上网络设计,提升SoC性能与能效比。

weixin_26750481的博客 310

【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)

题目链接:   https://vijos.org/p/1218 题目大意:   一个N个数的环,分成M块,块内的数求和%10,最后每块地值累乘,求最大和最小。   n(1≤n≤50)和m(1≤m≤9)太小了可以随便搞。 题目思路:   【动态规划】   区间DP。环形DP。断环为链,在后面补一段N,当链做。   f[i][j]表示前I个数分成M

Coolxxx的博客 1319

轻量级NAS的隐秘战场:比特米盒CumeBox2与CasaOS的生态融合实践

本文探讨了比特米盒CumeBox2轻量级NAS设备与CasaOS操作系统的生态融合实践。通过硬件选型、系统部署、性能优化和应用场景分析,展示了如何将CumeBox2与CasaOS深度整合,打造经济实用的家庭数据管理中心,特别适合入门级用户和小型办公环境。

rl6adventurer的博客 892

HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 872    Accepted Submission(s): 236 Problem Description Mr.

Coolxxx的博客 630

Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航

Docker中安装Ubun22以及ROS,gazebo可视化等

lovebc的博客 1675

新手3dslicer手动肝脏切割及体积测量(详细图文)

刚接手软件的时候,我一直想用自动分割工具,试验了Med sam,依赖安装不了;试验了英伟达的AI,NvidiaAIAssis,传服务器根本没反应,所有只有用了手动切割。不要求所有层面勾画,但是最好是典型层面都勾画一下,特别是有毗邻脏器密度相近的层面。点击3D后可能三维窗口未显示,可以调整一下窗口大小,有可能显示在我们看见的范围之外。早就准备更新这篇了,由于懒癌发作,一直早葛优躺,今天刚好有点时间,就简单写下来。

linjianping513的博客 5923

Basic Data Structurek(模拟,双向队列)

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 260    Accepted Submission(s): 62 Problem Description Mr. Frog

spark__s的博客 1305

COT Buck和普通Buck的区别

传统的电流模控制的调制原理,由时钟脉冲信号 clk 的上升沿触发开始一个新的开关周期,d 由低变高,主开关闭合,流过它的电流和电感电流相等,并以固定斜率逐渐增大,直至 iL *Ri 与斜坡补偿信号 se 的和等于控制信号 vc;此时,比较器的输出电平由低变高,导通时间产生器被触发,其输出 d 由低变高,并产生一个固定的导通时间 Ton;然后 PWM 比较器的输出由低变高,导通时间产生器被触发,主开关闭合,电感电流逐渐增大,直到导通时间产生器计满固定的时间 Ton,d 变为低电平,主开关断开,周期结束。

模拟芯片设计 1125

hdu5929Basic Data Structure

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:要求模拟一个存入0,1的栈,有4个操作1:push a,在栈顶插入a。2:pop,删除栈顶。3:reverse,将这个栈翻转一下。4:query,询问栈顶到栈底的atop nand atop-1 nand ... a1。 分析:前3个操作都很容易实现,唯一的难度就是快速就是这个答案。我们会

Fsss 1610

YOLO26改进策略【Neck】| ICCV2025 反向卷积 Converse2D 数学逆运算提重构 + 特征域建模降伪影,提升多尺度目标检测精度

本文记录的是利用Converse2D 算子改进 YOLO26 的上采样。(Converse 2D Convolution)通过正则化最小二乘闭式解与深度化空间建模结合,实现YOLO26特征提取与上采样阶段的卷积逆运算及特征精准重构。本文利用算子,通过闭式解的非迭代计算还原卷积下采样后的原始特征,再通过可学习核与自适应正则化参数稳定逆问题求解,同时依托圆形填充与插值初始估计保留特征高频细节,对YOLO26中不同尺度检测目标的特征进行针对性重构强化、抑制卷积/转置卷积带来的伪影与信息损失干扰,在特征融合与上采样

Limiiiing的博客 653

Qt入门教程【环境搭建篇】Qt6+Mingw+QMake+QtCreator

Qt Windows平台安装

小鱼酱的博客 2万+

hdu 5929 Basic Data Structure 双端队列

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 260    Accepted Submission(s): 62 Problem Description Mr. Frog

Kblacksmith的博客 1300

使用Qt在FreeRTOS上构建MCU应用程序

如果我们想要在FreeRTOS上运行该应用程序,我们需要选择适用于我们处理器架构的交叉编译工具链,并将目标设备设置为我们的开发板。在该代码中,我们使用xTaskCreate()函数创建了一个名为“qt_task”的任务,并将其启动。首先,我们需要安装Qt for MCU开发环境。Qt for MCU是基于Qt 5开发的针对MCU的特殊版本,它可以生成最小体积的代码,从而适用于资源有限的嵌入式系统。如果我们想要在FreeRTOS上运行这个程序,我们需要将其包装在一个任务中,并在任务创建后启动Qt的事件循环。

ByteWhizX的博客 1814

hdu5929 Basic Data Structure(模拟+双端队列)

题目 让你模拟栈,实现n(2<=n<=2e5)个操作,操作分四种 ①PUSH 0/1 会将0或1放到栈顶 ②POP 弹出栈顶元素,保证不会对空栈进行该操作 ③REVERSE 对栈内元素顺序反转,12345变54321 ④QUERY 询问从栈顶到栈底的与非值,如a1与非a2与非a3 (与非操作 0与非0==1 0与非1==1 1与非0==1 1与非1==0) 思路来源 h...

小衣同学的博客 1070

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HDU5929 Basic Data Structure(双端队列)

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 928    Accepted Submission(s): 246 Problem Description Mr. Frog

KeyboardPianist的博客 614

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 5929 Basic Data Structure (思维 + 双端队列)

首先发现且非序列只要出现0,可以直接的出结果,于是维护最后一个零的位置。采用数组加两个指针的方式模拟双端队列#include &lt;bits/stdc++.h&gt; using namespace std; const int maxn = 200010; const int base = 200005; int deq[maxn*2], l, r; int deq2[maxn*2], l2...

%%% 249

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU - 5929 H - Basic Data Structure (双端队列模拟)

原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:有一种栈可以完成以下四种操作 “PUSH x” 将 x 放到栈顶,x只能为 1 或 2 “POP” 将栈顶元素推出 “QUERY” 询问从栈顶到栈底所有元素依次进行NAND操作后的结果,栈为空时输出 Invalid. “REVERSE” 将栈翻转,即原来栈顶元素变为栈底元素,从上...

yiqzq的博客 560

hdu 5929 Basic Data Structure(双端队列+模拟)

Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operations of stack: ∙ PUSH x: put x on the top of the stack, x must be 0 or 1. ∙ POP: throw the

AK_HuangYC的博客 443

H - Basic Data Structure HDU - 5929(思维+模拟+双端队列)

H - Basic Data Structure HDU - 5929 分类:思维+模拟+双端队列 题意:给四个操作,push,pop,反转,查询。push放在栈的顶端,pop是弹出栈顶元素,反转是将栈的元素反转,查询从栈顶第一个数开始和后面一个数判断0 1=1,0 0=1,1 0=1,输出最后的答案。 思路:1、直接判断队尾的最后一个数,如果是0,直接输出1。如果是1,判断队尾第一0的位置...

DeathYmz的博客 639

hdu 5929 Basic Data Structure (双端队列)

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 260    Accepted Submission(s): 62 Problem Description Mr. Fr

passer__的博客 280

双端队列+与非运算——Basic Data Structure ( HDU 5929 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5929 分析: 实现一个数据结构,能够满足如下四种操作: PUSH:把一个元素( 0 or 1 )放入栈的顶部。 POP:删除栈顶的一个元素( 只会在栈不为空的时候进行 ) REVERSE:翻转整个栈 QUERY:做操作 atopNANDatop−1NAND....NANDa1a_{top}

FeBr2的博客 827

HDU - 5929 - Basic Data Structure (双端队列)

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2844    Accepted Submission(s): 626 Problem Description Mr. Fr

vloai 253

HDU5929 Basic Data Structure,ccpc,模拟双端队列(两倍大的数组从中间开始向两旁拓展)

1 做题时:容易看出规律,最后一个0的后面的1的个数的奇偶性决定了输出结果,第一次超时后,想到应该记录最后一个0的位置即可,于是想用数组存储0的位置(太麻烦,应该用队列或者数组模拟的队列),同时依然用双端队列模拟全部1和0的操作,从而导致一直超时。 重现赛后:看完题解后,领悟到模拟并不是单纯地将所有过程全部死板的模拟一遍,我们在抓住问题的本质(规律)时,应该去繁就简,只模拟需要的部分(去掉无效

他的博客 423

hdu-5929 Basic Data Structure(双端队列+模拟)

题目链接: Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 207Accepted Submission(s): 41 Problem Description Mr. Frog le...

weixin_30838921的博客 121

(HDU 5929)Basic Data Structure 双端队列+模拟 <2016CCPC东北地区大学生程序设计竞赛 - 重现赛 >

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1102 Accepted Submission(s): 290 Problem Description Mr. Frog learne

STILLxjy 1252

【HDU5929 2016CCPC东北地区大学生程序设计竞赛 - 重现赛 H】【打表找规律 队列模拟】Basic Data Structure 双端栈下连续1和0做nand的结果

Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 516    Accepted Submission(s): 150 Problem Description Mr. Frog le

snowy_smile的博客 1500
上一篇: POJ - 3139 Balancing the Scale (状态压缩+链表)
下一篇: HDU 5927 Auxiliary Set (树形)
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值