骗我呢

news/2025/10/21 20:46:19/文章来源:https://www.cnblogs.com/aemmprty/p/19156378

\(\mathbf{Part. 1}\)

从右往左考虑肯定没啥前途,我们考虑从上往下扫行。对于每一行,它上面的元素肯定都是单调递增的,又知道元素的值域在 \(0\)\(m\),而一行总共有 \(m\) 个数,因此每行可以被表示为 \(0\)\(m\) 失去一个数后按顺序排好。因此,我们可以用一个 \(0 \leq x \leq m\) 的数来表示一行。

我们设 \(f_{i, j}\) 表示前 \(i\) 行,第 \(i\) 行失去了 \(j\) 的方案数。那么,考虑相邻两行如何转移。

image-20251020210643804

首先,假设我们要从 \(i - 1\)\(i\) 转移,而 \(i - 1\) 失去的是 \(x\)。分两部分:

  • 对于第 \(i - 1\) 行的 \(x + 1\)\(m\),转移到 \(i\) 行后肯定是 \(x + 2\)\(m\)
  • 对于 \(0\)\(x - 1\),我们可以让消失的数从 \(0\) 取到 \((x + 2) - 1 = x + 1\)

上面结合具体实例理解。

假设 \(i\) 失去了 \(x\)\(i - 1\) 失去了 \(y\),有 \(x \leq y - 1\),因此 \(f_{i, j} = \sum_{k = 1}^{j + 1} f_{i - 1, k} = f_{i, j - 1} + f_{i - 1, j + 1}\)

这里将求和转化为两个数相加十分关键。

\(\mathbf{Part. 2}\)

我们观察这个 DP 式子,画出转移的图:

image-20251020211104573

可以看到,有两种移动方式:向右或者向左上。不妨将这个东西转化为我们更熟悉的网格图,向右和向上。如图。

image-20251020211922622

紫色是处理 \(f_{i, 0} = f_{i - 1, 0}\) 时的特殊转移。

那么,这个 DP 的式子实际上就等价于只经过图中的这些点和边,从 \((0, 0)\)\((n + 1, m)\) 的方案数。

而这些边点的限制就相当于我们只能向右 / 向上走,不经过两边的斜率为 \(1\) 的斜线。

对于做括号序列比较多的同学来说,这个就比较经典了。

\(\mathbf{Part. 3}\)

我们考虑反射容斥。

image-20251020212915580

如上图,我们假设左边的斜线为 \(A\),右边的为 \(B\),那么先容斥, 答案转化为 \(\text{ANS} - \text{先碰到到 A 的路径个数} - \text{先碰到到 B 的路径个数}\)。显然,先到 \(A\) 和先到 \(B\) 的两个问题是对称的,所以我们只考虑 \(A\)

如上图,我们取出来这条路径第一次碰到 \(A\) 的点,将这个点之后的整条路经翻转到 \(P'\),并观察 \(O \to P\) 先到 \(A\) 的路径和 \(O \to P'\) 的路径。实际上,这两个集合可以构成双射,证明显然。

因此,我们只需要计算 \(O \to P'\) 的路径数即可。

问题似乎解决了……吗?

\(\mathbf{Part. 4}\)

我们来想为什么这样会算错。

image-20251020224209539

如上图,我们有一条经过 \(A, B\) 的路径,但在被 \(A\) 翻折一次,被 \(B\) 翻着一次后,被减了两次。

其实,\(\mathbf{Part. 3}\) 中我们计算的路径个数,只是经过 \(A\) 的路径个数,而不是先碰到 \(A\) 的路径个数。所以,我们还要加上那些被重复计算的方案,比如分别经过 \(A, B\)\(B, A\) 的路径。

因此,我们定义 \(f(t)\),其中 \(f(\texttt{AB})\) 就表示分别经过 \(A, B\) 的路径个数,\(f(\texttt{BAB})\) 就表示分别经过 \(B,A,B\) 的路径个数。只要能算出来 \(f\),答案就是 \(\text{ANS} - f(\texttt{A}) - f(\texttt{B}) + f(\texttt{AB}) + f(\texttt{BA}) - \cdots\)

\(\mathbf{Part. 5}\)

我们以 \(f(\texttt{AB})\) 和下图的这个路径为例,考虑如何计算 \(f\)

img

这是初始的路径,设上面的对角线是 \(A\),下面的是 \(B\)我们先将这个路径与 \(A\) 做一遍 \(\mathbf{Part. 3}\) 的翻转(同时,把 \(B\) 也对称过去),然后再将新的路径对新的 \(B\) 做一遍翻转。如下:

img

设终点为 \(P\)。第一次关于 \(y=x+b\) 对称,第二次关于 \(y=x+2b−c\)(也就是 \(y = x + b\) 关于 \(y = x + c\) 对称的结果)对称。相信看到这里你已经知道大概怎么做了。

我们考虑更朴素的情况,设 \(F(S)\) 条路径对应的字符串是 \(S\)

  • 按顺序遍历字符。
  • 如果是 \(A\)\(P\)\(y=x+c\) 都关于 \(y=x+b\) 对称。
  • 如果是 \(B\)\(P\)\(y=x+b\) 都关于 \(y=x+c\) 对称。
  • 最后得到的 \(P\)\((0,0)\) 的路径数就是 \(F(S)\)
  • 如果 \(P\) 的横坐标或纵坐标小于 \(0\),就舍去。

现在,结合 \(\mathbf{Part. 4}\) 的答案式,我们就可以解出ci'y't

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/942643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手搓文件管理系统(持续开发中)

#include<bits/stdc++.h> using namespace std;/*** command:* cd [dirname]* to shift to a name_given dir* mkdir [dirname]* create a new dir under current dir* ls [dirname]* list…

AGC001~030 合集

AGC001~030。2025.3.10 - 2025.10.21。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢迎交流!!/kel,虽然应该也不会有人仔细看…

手写体识别

手写数字识别:基于PyTorch的卷积神经网络实现 一、项目概述 使用PyTorch实现一个基于卷积神经网络(CNN)的手写手写数字识别模型,通过MNIST数据集训练,实现对手写数字(0-9)的分类识别。 二、环境依赖Python 3.x PyTo…

AGC 合集 1.0

AGC001~030。2025.3.10 - 2025.10.21。 收录了前 30 场 AGC 中我写了题解的题目。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢…

20231302邱之钊密码系统设计实验一第二

1.参考相关内容,在Ubuntu或openEuler中(推荐openEuler)中使用OpenSSL库编程实现调用SM2(加密解密,签名验签),SM3(摘要计算,HMAC 计算),SM4(加密解密)算法,使用Markdown记录详细记录实践过程,每完成一项…

你好,我是肆闲:C语言的学习,成长与分享旅程

大家好,我是肆闲。 今天,我写下了我的第一篇博客,就像一个程序员运行了第一段 print("Hello World")一样。代码简单,却标志着一个充满无限可能的新世界,在我眼前打开了大门。作为一个刚入门的小白,我对…

深入BERT内核:用数学解密掩码语言模型的工作原理

传统语言模型有个天生缺陷——只能从左往右读,就像你现在读这段文字一样,一个词一个词往下看,完全不知道后面会出现什么。人类可不是这么学语言的。看到"被告被判**_**",大脑会根据上下文直接联想到&quo…

ZR 2025 NOIP 二十连测 Day 6

100 + 72 + 35 + 0 = 207, Rank 61/131.啊啊啊第一次上 200 /oh25noip二十连测day6 链接:link 题解:题目内 时间:4.5h (2025.10.21 13:40~18:10) 题目数:4 难度:A B C D\(\color{#F39C11} 橙\)*1200估分:100 + 7…

20251021

上午工程实训课接触了电工基础,老师演示了万用表测量、简单电路连接和安全操作规范 下午英语课围绕旅游主题展开听力, 晚上写离散数学作业 间隙用碎片时间整理了课堂笔记,还讨论了实训课上的电路连接问题。 (工程实…

[论文笔记] Precision-Guided Context Sensitivity for Pointer Analysis

Introduction Context-sensitivity 会带来静态分析的精度提升,但是也会带来巨大的开销,这引出一个关键的问题:能否在某些对整体分析的精度有重要影响的函数上选择性的使用 context-sensitivity?这个问题的难点在于…

英语_备忘_疑难

好的,这里有一些关于 **How** 和 **What** 在感叹句中使用的例题,涵盖了常见的规则和易错点。 **规则回顾:*** **What + (a/an) + 形容词 + 名词*** **How + 形容词/副词 + (主谓)** --- **例题:** 请选择正…

朋友圈文案不会写?这个AI指令可能帮得上忙

最近在整理AI提示词的时候,顺手写了个朋友圈文案生成的指令。本来只是自己用,后来发现身边朋友也有这个需求,就想着分享出来。写在前面 刷朋友圈的时候,你有没有发现:有些人随便发个照片配几个字,点赞评论一大堆…

「JOISC2020-掃除」题解

题解记录掃除 (Sweeping) sol 从 Subtask 3 的特殊性质入手,可以发现一个关键性质:无论之后如何操作,这个单调性在任何时刻均满足。其原因可以简单考虑一下操作的效力范围与结果得到。 理解之后容易推广到全局,不难…

职责分离的艺术:剖析主从Reactor模型如何实现极致的并发性能

职责分离的艺术:剖析主从Reactor模型如何实现极致的并发性能Reactor单线程模型 在Reactor单线程模型中,所谓的“单线程”主要针对I/O操作而言,即所有的I/O操作(如accept()、read()、write()和connect())都在同一个…

数学题刷题记录(数学、数论、组合数学)

P5686 [CSP-S2019 江西] 和积和简单题,直接将区间求和转换成前缀和,设 \(A_i = \sum_{i = 1}^n a_i,B_i = \sum_{i = 1}^n b_i\),那么式子为: \[\sum_{l = 1}^n \sum_{r = l}^n (A_r-A_{l-1})(B_r-B_{l-1}) \]\[=\…

记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞

记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600) 作者:惜分飞…

CF简单构造小计

记录在这的都是感觉比较妙的或者看了题解的( CF2155D Batteries有 \(n\) 个元素,其中有 \(a\) 个是好的( \(a\) 未知)。 每次你可以询问一对元素,返回1当且仅当两个元素都是好的,否则返回0。 在 \(\lfloor\frac{…

软件工程第三次作业:四则运算题目生成器 - Nyanya-

四则运算题目生成器 - 结对项目报告项目信息 详情课程 软件工程作业要求 结对项目项目目标 实现一个四则运算题目生成器,支持有理数运算,规范软件开发流程,熟悉结对编程结对成员 姓名1: [杨浩] 学号1: [3123004462]…

ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞

ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:ORA-600 kokasgi1故障处理(sys被重命名) 作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有…