题目


分析

一开始想的是栈的匹配,但是位数不够,而且还忘记写memory.h,

考虑它询问次数不超过一万五千次,\(O(n^2)\)的询问是绰绰有余的,

如果每一个符号都能被匹配那整个串也能被匹配,而中间的符号怎么样可以忽略,只需要栈为空时两端相等即可

那么考虑维护当前需要匹配的点、当前位置、需要匹配点是什么类型的符号以及栈的大小,正好用二进制压成22位


代码

#include "memory.h"
int Get_Hash(int is_bracket,int Top,int x,int now){
return is_bracket|(Top<<1)|(x<<8)|(now<<15);
}
int Memory(int N, int M) {
int is_bracket=M&1,Top=(M>>1)&127,x=(M>>8)&127,now=(M>>15)&127;
if (!x) return Get_Hash(0,0,1,1);
if (x>N) return -1; else if (now<1||now>N) return -2;
char ch=Get(now);
if (x==now){
if (ch=='<'||ch=='[') return Get_Hash(ch=='[',1,x,now+1);
else return Get_Hash(ch==']',1,x,now-1);
}else if (x<now){
if (ch=='>'||ch==']') --Top; else ++Top;
if (!Top&&!(is_bracket^(ch=='>'))) return -2;
else if (!Top) return Get_Hash(0,0,x+1,x+1);
return Get_Hash(is_bracket,Top,x,now+1);
}else{
if (ch=='<'||ch=='[') --Top; else ++Top;
if (!Top&&!(is_bracket^(ch=='<'))) return -2;
else if (!Top) return Get_Hash(0,0,x+1,x+1);
return Get_Hash(is_bracket,Top,x,now-1);
}
}

#交互,栈#LOJ 3005 「JOISC 2015 Day 4」Limited Memory的更多相关文章

  1. Loj #2731 「JOISC 2016 Day 1」棋盘游戏

    Loj 2731 「JOISC 2016 Day 1」棋盘游戏 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少 ...

  2. LOJ 2737 「JOISC 2016 Day 3」电报 ——思路+基环树DP

    题目:https://loj.ac/problem/2737 相连的关系形成若干环 / 内向基环树 .如果不是只有一个环的话,就得断开一些边使得图变成若干链.边的边权是以它为出边的点的点权. 基环树的 ...

  3. LOJ 2736 「JOISC 2016 Day 3」回转寿司 ——堆+分块思路

    题目:https://loj.ac/problem/2736 如果每个询问都是 l = 1 , r = n ,那么每次输出序列的 n 个数与本次操作的数的最大值即可.可以用堆维护. 不同区间的询问,可 ...

  4. 「JOISC 2015 Day 1」卡片占卜

    题目描述 K 理事长是占卜好手,他精通各种形式的占卜.今天,他要用正面写着 I ,背面写着 O 的卡片占卜一下日本 IOI 国家队的选手选择情况. 占卜的方法如下: 首先,选取五个正整数 A,B,C, ...

  5. loj 2392「JOISC 2017 Day 1」烟花棒

    loj 答案显然满足二分性,先二分一个速度\(v\) 然后显然所有没有点火的都会往中间点火的人方向走,并且如果两个人相遇不会马上点火,要等到火快熄灭的时候才点火,所以这两个人之后应该在一起行动.另外有 ...

  6. LOJ #2731. 「JOISC 2016 Day 1」棋盘游戏(dp)

    题意 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少有一个棋子,也至少有一个空位. 游戏的目标是:在还没有放棋 ...

  7. [LOJ #2833]「JOISC 2018 Day 1」帐篷

    题目大意:有一个$n\times m$的网格图,若一个人的同一行或同一列有人,他就必须面向那个人,若都无人,就可以任意一个方向.若一个人无法确定方向,则方案不合法,问不同的方案数.$n,m\leqsl ...

  8. LOJ 2840「JOISC 2018 Day 4」糖

    有趣的脑子题(可惜我没有脑子 好像也可以称为模拟费用流(? 我们考虑用链表维护这个东西 再把贡献扔到堆里贪心就好了 大概就是类似于有反悔机制的贪心?我们相当于把选中的一个打上一个-v的tag然后如果选 ...

  9. loj#2838 「JOISC 2018 Day 3」比太郎的聚会

    分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 #include<bits/stdc++.h> using namespace st ...

  10. loj#2391 「JOISC 2017 Day 1」港口设施

    分析 https://yhx-12243.github.io/OI-transit/records/uoj356%3Bloj2391%3Bac2534.html 代码 #include<bits ...

随机推荐

  1. win32 - 使用CreateRemoteThread调用dll上的函数(建立管道)

    Dll: // dllmain.cpp : Defines the entry point for the DLL application. #include "pch.h" #i ...

  2. Thinkpad T14 AMD版无线网卡不可用

    硬件环境: Thinkpad T14 AMD 操作系统: Windows 10家庭版 问题描述: Windows 10在后台默默做了补丁更新,导致无线网卡和蓝牙鼠标都不可用(但是有线网却是能正常工作的 ...

  3. ProtoBuf 基本使用

    一.是什么 Protocol Buffers,是Google公司开发的一种数据描述语言,是一种平台无关.语言无关.可扩展且类似于XML能够将结构化数据序列化,可用于数据存储.通信协议等方面. 二.为什 ...

  4. NSSRound#17 Basic web

    NSSRound#17 Basic web 真签到 审题 一个登录界面 看到页面名字Robots? 转到robots.txt 看到加密 知识点: 加密解密. 解题 hint解密,使用Hex加密方式解出 ...

  5. 【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)

    问题描述 使用 .NET Azure.Identity 中的 DefaultAzureCredential 认证并连接到Azure Key Vault中, 在Key Vault 的示例中,并没有介绍如 ...

  6. 【Azure 事件中心】在Windows系统中使用 kafka-consumer-groups.bat 查看Event Hub中kafka的consumer groups信息

    问题描述 使用 Apache Flink 连接支持 Apache Kafka的Azure Event Hub后,由于消费端的Consumer Group是动态创建,在门户页面和Service Bus ...

  7. 专访容智信息柴亚团:最低调的公司如何炼成最易用的RPA?

    专访容智信息柴亚团:最低调的公司如何炼成最易用的RPA? 专访容智信息柴亚团:终极愿景是助力天下企业成为数字化孪生组织 文/王吉伟 6月,容智信息(容智)正式发布了全新的移动端RPA产品iBot Mo ...

  8. Git 如何删除本地分支和远程分支

    查看已有的本地及远程分支:git branch -a   删除远程分支(当前删除的是origin/dev分支):git push origin --delete dev   删除后,再次查看分支情况: ...

  9. crypto-js DES加密 base64 post传输

    演示地址: http://pengchenggang.gitee.io/crypto-js-des/ 开源地址: https://gitee.com/pengchenggang/crypto-js-d ...

  10. 怎么实现Redis的高可用?(主从、哨兵、集群)

    高可用有两个含义:一是数据尽量不丢失,二是保证服务尽可能可用. AOF 和 RDB 数据持久化保证了数据尽量不丢失,那么多节点来保证服务尽可能提供服务. 一般在实际生产中,服务不会部署成单节点,主要是 ...