首页 > 其他分享 >23 真题前两题

23 真题前两题

时间:2024-10-11 10:59:54浏览次数:8  
标签:哈希 23 int 真题 long 两题 考虑 我们 消除

密码锁

没什么好说的,要么暴力判断,要么手推。

消消乐

我们观察一下这个能消除的结构,因为是每次消除相邻两个,所以不难想到很像括号匹配,或者说可消除的是有对称性的,所以我们一定可以找到一个节点开始反转左右手性,所以我们就可以用栈来保持前半部分的手性,后半部分遇到转折点就是可以消除,可以消除就是可以消除。

先考虑部分分,就是 \(n^2\) 枚举每个子串,再对每个子串进行入栈模拟,是 \(n^3\) 的,35pts。

考虑怎么优化这个暴力。就是考虑大的串必然包含小的串,所以对大的串进行模拟的时候我们是一定将小的串也进行了一次模拟的。考虑对于每个小的串,如果前面是全部可以消除的,就是到它的起点位置时栈为空,那么到它的末尾时看其栈为不为空就已经判断了它是不是可消除的。如果起点不为空,那么我们就不算进去,后面总有一次会起点是空的。所以我们不用再重复模拟,只需要枚举起点然后看栈为空的次数就好了。但是有人就要问了,你这样为什么不会重呢,有可能这个区间是可消除的几个拼接在一起,那你这样算出来栈为空的次数就多了吧。其实不然。你考虑如果两段是合法的,那么拼起来还是合法的,这样就会比单纯的单个合法多了一些排列组合,而如果有不合法的显然对答案没有影响,所以是少想了而不是算多了。

所以我们就有了 \(n^2\) 暴力,可以获得额外的15pts。

考虑继续优化,既然我们入栈的模拟不能优化,那我们就对于枚举头端点进行一个优化,考虑我们后面的计算能不能用上前面的数值呢?你考虑其实我们的字符串对于每次出栈入栈以后都是有一个状态的,我们如果维护栈内的字符串组成的状态,那么是不是就可以避免重复对这一个状态进行计算了。发现在从 \(1\) 到 \(n\) 维护栈序列的时候,若对于某个时刻 \(l\) 和某个时刻 \(r\),两种时刻的栈序列完全相同,那么说明子串 \(l+1,r\) 一定是可消除的。所以我们可以采用字符串哈希来维护每个时刻的栈序列,那么栈序列相同说明该情况下哈希值完全相同。维护每种哈希值出现了多少次,假设一种哈希值出现了 \(k\) 次,那么其对答案的贡献就是 \(k\choose 2\) 。即 \(k\) 个相同的时刻,每次取两个时刻 \(l\) 和 \(r\) 构成的子串 \(

标签:哈希,23,int,真题,long,两题,考虑,我们,消除
From: https://www.cnblogs.com/mountzhu/p/18457992

相关文章

  • 20222322 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容本周学习主要围绕缓冲区溢出漏洞(攻击)展开1.2实验内容简述“pwn1”是一个Linux可执行文件正常运行时会调用“foo”函数。“foo”函数的功能是对用户输入的字符串进行简单回显。此程序中还包含另一个代码片段“getShell”,具有返回一个可用Shell的......
  • 华为OD机试真题】68、矩阵扩散
    packagemainimport( "errors" "fmt" "strconv" "strings")typepointstruct{ xint yint valueint}typeimagestruct{ wint hint allPointint points[][]*point}func(i......
  • 20222308 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容本次式样具体内容是通过三种方法,运行pwn1可执行文件,调用getshell。缓冲区溢出作为一种非常致命的攻击,它会使攻击者直接破坏堆栈保护,非法获取数据。完成本次实验,需要具备以下知识和技能基础:创建kali虚拟机,连接网络等这个部分对我来说还是出现了比较大的波折,我的操......
  • 2023杭电多校4
    2023杭电多校4a-bProblem题目大意:每个物品都有a,ba,ba,b两个值,......
  • 2023 年和 2024 年最具威胁的 25 种安全漏洞(CWE Top 25)
    目录1.缓冲区溢出(CWE-120)2.代码注入(CWE-94)3.认证缺失(CWE-287)4.访问控制缺失(CWE-284)5.SQL注入(CWE-89)6.跨站脚本(XSS)(CWE-79)7.不安全的反序列化(CWE-502)8.脆弱的随机数生成(CWE-331)9.信息泄露(CWE-200)10.不安全的直接对象引用(CWE-63......
  • 代码随想录算法训练营day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K
    学习资料:https://programmercarl.com/0150.逆波兰表达式求值.html#算法公开课栈、队列、堆学习记录:150.逆波兰表达式求值(中序表达式转换为后序表达式,用栈实现;遇到符号就从栈中取前两个元素进行运算,再放回去)点击查看代码fromoperatorimportadd,sub,muldefdiv(x,y):......
  • 20222304 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容1)反汇编反汇编是指将计算机程序的机器代码转换回其相应的汇编代码的过程。在计算机编程和逆向工程领域中,反汇编是一种常见的技术,用于理解和分析二进制程序的功能和内部结构。通常情况下,程序员编写的源代码会被编译器转换成机器码,这是计算机可以直接......
  • 20222321 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一.实验内容1实验目标本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想......
  • jsp传统文化在线学习系统3wm23--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,教师,课程分类,课程信息,选择课程,退出课程,学习资源开题报告内容一、项目背景在全球化和信息化的背景下,传统文化面临着被边缘化的风险。为了保护和传承......
  • 10.10 爆零赛(2023 炼石计划 NOIP 模拟赛 #2)
    炼石计划9月10日NOIP模拟赛#2【补题】-比赛-梦熊联盟(mna.wang)模拟赛恒等式:\(0+0+0+0=0\)。复盘T1好像可做。有个显然的\(n^2\)DP。推式子的时候猜到了\(\gcd=1\)的做法。进一步尝试正解未果。T2一眼只会爆搜。想到了\(b\timesb!\)的做法,应该能过\(......