#交互,栈#LOJ 3005 「JOISC 2015 Day 4」Limited Memory
分析
一开始想的是栈的匹配,但是位数不够,而且还忘记写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的更多相关文章
- Loj #2731 「JOISC 2016 Day 1」棋盘游戏
Loj 2731 「JOISC 2016 Day 1」棋盘游戏 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少 ...
- LOJ 2737 「JOISC 2016 Day 3」电报 ——思路+基环树DP
题目:https://loj.ac/problem/2737 相连的关系形成若干环 / 内向基环树 .如果不是只有一个环的话,就得断开一些边使得图变成若干链.边的边权是以它为出边的点的点权. 基环树的 ...
- LOJ 2736 「JOISC 2016 Day 3」回转寿司 ——堆+分块思路
题目:https://loj.ac/problem/2736 如果每个询问都是 l = 1 , r = n ,那么每次输出序列的 n 个数与本次操作的数的最大值即可.可以用堆维护. 不同区间的询问,可 ...
- 「JOISC 2015 Day 1」卡片占卜
题目描述 K 理事长是占卜好手,他精通各种形式的占卜.今天,他要用正面写着 I ,背面写着 O 的卡片占卜一下日本 IOI 国家队的选手选择情况. 占卜的方法如下: 首先,选取五个正整数 A,B,C, ...
- loj 2392「JOISC 2017 Day 1」烟花棒
loj 答案显然满足二分性,先二分一个速度\(v\) 然后显然所有没有点火的都会往中间点火的人方向走,并且如果两个人相遇不会马上点火,要等到火快熄灭的时候才点火,所以这两个人之后应该在一起行动.另外有 ...
- LOJ #2731. 「JOISC 2016 Day 1」棋盘游戏(dp)
题意 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少有一个棋子,也至少有一个空位. 游戏的目标是:在还没有放棋 ...
- [LOJ #2833]「JOISC 2018 Day 1」帐篷
题目大意:有一个$n\times m$的网格图,若一个人的同一行或同一列有人,他就必须面向那个人,若都无人,就可以任意一个方向.若一个人无法确定方向,则方案不合法,问不同的方案数.$n,m\leqsl ...
- LOJ 2840「JOISC 2018 Day 4」糖
有趣的脑子题(可惜我没有脑子 好像也可以称为模拟费用流(? 我们考虑用链表维护这个东西 再把贡献扔到堆里贪心就好了 大概就是类似于有反悔机制的贪心?我们相当于把选中的一个打上一个-v的tag然后如果选 ...
- loj#2838 「JOISC 2018 Day 3」比太郎的聚会
分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 #include<bits/stdc++.h> using namespace st ...
- loj#2391 「JOISC 2017 Day 1」港口设施
分析 https://yhx-12243.github.io/OI-transit/records/uoj356%3Bloj2391%3Bac2534.html 代码 #include<bits ...
随机推荐
- 异常处理之raise A from B
raise A from B 语句用于连锁chain异常 from 后面的B可以是: - 异常类 - 异常实例 - None 如果B是异常类或者异常实例,那么B会被设置为A的__cause__属性,表 ...
- ContentType组件表使用
https://www.shuzhiduo.com/A/qVdepN2r5P/
- 【图论#02】岛屿系列题(数量、周长、最大面积),flood fill算法的代码实现与优化
岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...
- 【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)
问题描述 在上一篇博文([Azure 存储服务].NET7.0 示例代码之上传大文件到Azure Storage Blob (一):https://www.cnblogs.com/lulight/p/ ...
- C#多线程(5):资源池限制
目录 Semaphore.SemaphoreSlim 类 Semaphore 类 示例 示例说明 信号量 SemaphoreSlim类 示例 区别 Semaphore.SemaphoreSlim 类 ...
- 论文《Attention is all you need》阅读笔记
Attention is all you need Transformer模型 Model Architecture Transformer结构上和传统的翻译模型相同,拥有encoder-decode ...
- Lua中pair和ipair的区别
Lua中pair和ipair的区别? 二者都是Lua中内置的迭代器,可以对数组或table进行遍历. 在正常的数组或table的遍历中,二者没有区别. tableNormal={"this& ...
- 适用mybatis和jpa的全数据库类型主键生成插件,分布式高并发有序id生成器
适用mybatis和jpa的全数据库类型主键生成插件,分布式高并发有序id生成器
- Python使用os模块创建带时间戳的文件夹
直接上源码: # 导入os模块 import os import time # 创建文件夹函数 def mkdir(path): # os.path.exists 函数判断文件夹是否存在 folder ...
- Ubuntu 的源相关介绍(最近在配gstreamer的时候,紧急补充的知识)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...