T1.

显然往 \(x < 0, y < 0\) 的点走一定不优。

根据转移式可发现 \(C(x, y)\) 即从 \((0, 0)\) 走到 \((x, y)\) 的方案数 \(\dbinom {x + y} {x}\)。

那么兜一个圈圈再回到目的地显然没有直接往目的地走优。

于是我们可以强化限制:每一步只能向右或者上走。

设 \(f_{i, j}\) 表示走到 \((i, j)\) 的体力的最小花费,则有 \(f(i, j) = \min \{f(i - 1, j), f(i, j - 1)\} + \dbinom {i + j} {j}\)。

其中 \(0 \leq i \leq n, 0 \leq j \leq m\),且 \(f(i, 0) = i, f(0, j) = j\)。

从 \((n, m)\) 点往前倒推转移过程,不难发现走 \((0, 0) \to (0, m) \to (n, m)\) 或者 \((0, 0) \to (n, 0) \to (n, m)\) 一定最短。更确切的:

  • 若 \(n = \max \{n, m\},m = \min \{n, m\}\),则 \((0, 0) \to (n, 0) \to (n, m)\) 最短。
  • 若 \(m = \max \{n, m\},n = \min \{n, m\}\),则 \((0, 0) \to (0, m) \to (n, m)\) 最短。

考虑直接写出最后答案的柿子,以第一种情况为例。

容易得出 \(\mathbb{Ans} = n + 1 + {\large \sum \limits _{i = 1}^{m}} \dbinom {n + i} {n}\)。

可化为 \(n + 1 + {\large \sum \limits _{i = n + 1}^{m + n}} \dbinom {i} {n} = n + 1 + {\large \sum \limits _{i = 0}^{m + n}} \dbinom {i} {n} - {\large \sum \limits _{i = 0}^{n}} \dbinom {i} {n}\)。

前面一个和式使用变上项求和公式,后一个本来就等于 \(0\),故有:\(\mathbb{Ans} = n + 1 + \dbinom {m + n + 1} {n + 1}\)。

\(m, n\) 很大,但 \(mn \leq 10^{12}\),故考虑利用 \(\dbinom {m + n + 1} {n + 1} = \dbinom {m + n + 1} {m}\),调整计算过程,大力算即可,大概是根号级别的。


T2.

把题目在手上 Rua 一 Rua,你会发现它就是一个有可重复元素的康拓展开(本质上就是一堆 \([0, 9]\) 的数,可重,在全排列中有多少的排列的字典序小于给定排列)。

那就像康托展开一样去玩它。

设原数,即原序列为 \(A\),长度为 \(n\)。对于第 \(i\) 个位置考虑对实际填数方案分类。

  • \(i\) 之前的数均与 \(A\) 中对应元素相等,且 \(i\) 上填比 \(A_i\) 小的数。那么 \(i\) 以后的就是没用过的数的排列个数,注意是可重排列。
  • \(i\) 及以前的数均与 \(A\) 中对应元素相等。标记当前元素被用过直接往后继续算即可。

仅有以上两种情况,给个部分代码供参考。

for(int i = 1; i <= len; i++) {
for(int j = 0; j < (s[i] - '0'); j++)
if(cnt[j]) {
cnt[j]--;
ans += calc(len - i); // 可重排列
cnt[j]++;
}
cnt[s[i] - '0']--;
}

然后考虑处理这个可重排列。

设需要排列的可重集为 \(B = \{B_1 \times n_1, B_2 \times n_2 , \dots , B_k \times n_k\}\),表示 \(B_i\) 有 \(n_i\) 个。

朴素的排列计算方式为:\(\dfrac {S!} {\prod \limits_{i = 1}^{k}(n_i!)}\),其中 \(S = {\large \sum \limits _{i = 1}^k} n_i\)。

但此题无取模,这样算会炸,考虑换一个方案,我们可以将 \(B_1\) 到 \(B_k\) 按顺序分配到 \(n\) 个位置上。

则排列数可化为:\({\large \sum \limits _{i = 1} ^{k}} \dbinom {n - \mathrm{Pre}(i)} {n_i}\),当中 \(\mathrm{Pre}(i) = {\large \sum \limits _{j = 1} ^{i}} n_j\)。

这样就可以杨辉三角预处理,然后再做了。


T3.

简单容斥。

抬手先判一个若 \((n - 1) \times m < k\),则无解。

接下来发现,如果没有 \([0, n)\) 的限制,利用插板法可答案为 \(\dbinom {m + k - 1} {m - 1}\)。显然这里面会有单个元素超过 \(n - 1\) 的分配方案,考虑去除掉它们。

设至少有 \(x\) 个元素超过了 \(n - 1\) 的方案数为 \(f(x)\),发现 \(f(x) = \dbinom {m} {i} \times \dbinom {m + k - x \times n - 1} {m - 1}\)。

即将这 \(x\) 个元素先每一个都分配 \(n\),在把剩下的分配随便分配的方案数,注意每个元素是不同的,需要考虑顺序。

接下来就容斥呗。可知 \(\mathbb{Ans} = {\large \sum \limits _{i = 0}^{m}f(i) \times k(i)}\),其中 \(k(i) = \left \{ \begin{matrix} -1, x\equiv 1 \pmod 2 \\ 1, x \equiv 0\pmod 2 \end{matrix} \right.\)。


T4.

为什么要难度降序啊。

设至少有 \(x\) 个爱好相同的人的对数为 \(f(x)\)。

则 \(\mathbb{Ans} = {\large \sum \limits _{i = 0}^{5}f(i) \times k(i)}\),其中 \(k(i) = \left \{ \begin{matrix} -1, x\equiv 1 \pmod 2 \\ 1, x \equiv 0\pmod 2 \end{matrix} \right.\)。

\(f(x)\) 可以直接 Trie 或者 Hash + map 统计出来嘛。

就是说,你用 \(O(2^5)\) 对于每一个人去枚举至少那些爱好属于相同的,然后分开计算贡献。


Conclusion.

首先死在了难度降序。

然后死在了 T1 降智打了 Lucas。

接着死在了 T2 对康拓展开毫无印象。

又死在了 T3 手推降智 \(O(nm)\) 容斥。

最后死在了 T4 的失智。

综合来讲,死在了对题目 Trick 的极低的敏感度。

Solution -「2021.11.27」\Infty的更多相关文章

  1. Solution -「多校联训」朝鲜时蔬

    \(\mathcal{Description}\)   Link.   破案了,朝鲜时蔬 = 超现实树!(指写得像那什么一样的题面.   对于整数集 \(X\),定义其 好子集 为满足 \(Y\sub ...

  2. Solution -「多校联训」假人

    \(\mathcal{Description}\)   Link.   一种物品有 长度 和 权值 两种属性,现给定 \(n\) 组物品,第 \(i\) 组有 \(k_i\) 个,分别为 \((1,a ...

  3. Solution -「多校联训」查拉图斯特拉如是说

    \(\mathcal{Description}\)   Link.   给定 \(n\) 和 \(m\) 次多项式 \(f(x)\),求 \[\sum_{i=0}^n\binom{n}{i}f(i)\ ...

  4. Solution -「洛谷 P6021」洪水

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个点的带点权树,删除 \(u\) 点的代价是该点点权 \(a_u\).\(m\) 次操作: 修改单点点权. ...

  5. Solution -「洛谷 P4719」「模板」"动态 DP" & 动态树分治

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的带权树,\(m\) 次单点点权修改,求出每次修改后的带权最大独立集.   \(n,m\le10^5 ...

  6. Solution -「集训队作业 2013」「洛谷 P4841」城市规划

    \(\mathcal{Description}\)   link.   求 \(n\) 个结点的简单无向连通图个数,对 \(1004535809~(479\times2^{21}+1)\) 取模.   ...

  7. Solution -「洛谷 P5827」边双连通图计数

    \(\mathcal{Description}\)   link.   求包含 \(n\) 个点的边双连通图的个数.   \(n\le10^5\). \(\mathcal{Solution}\)    ...

  8. Solution -「洛谷 P5827」点双连通图计数

    \(\mathcal{Description}\)   link.   求有 \(n\) 个结点的点双连通图的个数,对 \(998244353\) 取模.   \(n\le10^5\). \(\mat ...

  9. Solution -「洛谷 P4389」付公主的背包

    \(\mathcal{Description}\)   Link.   容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模.   \(n,m ...

随机推荐

  1. 手脱NsPacK壳

    1.查壳 使用PEiD未能检测到壳信息,这时,我们更换其他工具 从图中可以看到壳的信息为[NsPacK(3.x)[-]] 2.百度壳信息 北斗程序压缩(Nspack)是一款压缩壳.主要的选项是:压缩资 ...

  2. flask配置文件、路由设置、模板语法、请求与响应、session使用、闪现功能(flash)

    今日内容概要 flask 配置文件 flask 路由系统 flask模板语法 请求与相应 session 闪现(flash翻译过来的) 内容详细 1.flask 配置文件 # django ---&g ...

  3. ThreadLocal夺命11连问

    前言 前一段时间,有同事使用ThreadLocal踩坑了,正好引起了我的兴趣. 所以近期,我抽空把ThreadLocal的源码再研究了一下,越看越有意思,发现里面的东西还真不少. 我把精华浓缩了一下, ...

  4. python模块,邮件推送交换机error级别以上log,django前端展示

    前情概要 原syslog服务器只收集不推送日志,可以实时展示,服务器在海外内网,办公网做的有分流,到日志服务器的流量送到香港,其余流量国内,疫情期间在家办公,每次连接需要拨海外l2tp,挂着梯子访问国 ...

  5. 使用 VS Code + Markdown 编写 PDF 文档

    背景介绍 作为一个技术人员,基本都需要编写技术相关文档,而且大部分技术人员都应该掌握 markdown 这个技能,使用 markdown 来编写并生成 PDF 文档将会是一个不错的体验,以下就介绍下如 ...

  6. 【python】python连接Oracle数据库

    python连接Oracle数据库 查看Oracle版本 select * from v$version 下载对应版本的InstantClient 下载网址 InstantClient 1.解压Ins ...

  7. Mac远程windows工具

    现在很多小伙伴都是使用MAC系统,但在工作中或多或少会遇到需要远程windows的情况,今天给大家安利一款软件,让你轻轻松松远程windows Microsoft Remote Desktop Mic ...

  8. 【SNOI2017 DAY1】炸弹

    题意:P5024 思路:首先\(O(n^2)\)向能炸到的点连边,所以能到达的点的个数就是能到达的点的个数.然后显然要缩点+拓扑排序(我写的记搜). 然后再写一个线段树优化建图. 然后就WA了,我想了 ...

  9. Puppeteer学习笔记 (2)- Puppeteer的安装

    本文链接:https://www.cnblogs.com/hchengmx/p/11009849.html 1. node的下载安装 由于puppeteer是nodejs的一个库,所以首先需要安装no ...

  10. ExtJS 同行表单域对齐有误处理办法

    更新记录 2022年5月29日 第一次编辑.使用的ExtJS版本:ExtJS 7.4 问题 原本都是显示正常的表单域,比如这些文本框.选择框都是正常. 在用户进行操作,然后显示验证提示后,明显出现了问 ...