Solution Set -「NOI Simu.」2022.07.21】的更多相关文章

「ARC 107A」Simple Math   Link.   答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadruple   Link.   枚举 \(i=c+d\),则 \(a+b=i+k\),乘法原理计数. 「ARC 107C」Shuffle Permutation   Link.   由于矩阵内无相等元素,所以行和列的顺序可以直接乘法原理.以对行的排列方案计数为例,并查集维护所有可以交换位置的行,则行的方案…
\(\mathcal{Description}\)   Link.   自己去读题面叭~ \(\mathcal{Solution}\)   首先,参悟[样例解释 #2].一种暴力的思路即为钦定集合 \(S\) 内的位置都合法,容斥计数.其中对于每条纸带的每个位置,有三种情况(令 _ 为"保持不变",注意没有被机器人经过的位置都有这种修改): 同时存在 _ 和 *:或者同时存在 0 和 1:只能为空,方案数为 \(1\): 否则,存在(_ 或 *)且存在(0 或 1):只能为空或 01…
\(\mathcal{Description}\)   Link.   对于非空二叉树 \(T\),定义 \(\operatorname{grow}(T)\) 为所有能通过若干次"替换 \(T\) 的某个叶子为任意非空二叉树"的操作得到的二叉树集合:对于非空二叉树集合 \(\mathscr T\),定义 \(\operatorname{grow}(\mathscr T)=\bigcup_{T\in{\mathscr T}}\operatorname{grow}(T)\).多次询问,每次…
\(\mathcal{Description}\)   Link.   给定 \(n,m,k\),求 \(x\in [1,n]\cap\mathbb N,y\in [1,m]\cap \mathbb N\),且最简分数 \(\frac{x}{y}\) 在 \(k\) 进制下是纯循环小数(包括整数)的 \((x,y)\) 数量.   \(n,m\le10^9\),\(k\le2\times10^3\). \(\mathcal{Solution}\)   当你举几个十进制的纯循环小数就不难发现规律了…
\(\mathcal{Description}\)   Link.   美食节提供 \(n\) 种菜品,第 \(i\) 种的需求量是 \(p_i\),菜品由 \(m\) 个厨师负责制作,第 \(j\) 个厨师做第 \(i\) 道菜的用时是 \(t_{ij}\).安排做菜方案,使得 \(\sum p_i\) 个需求等待的总时间最小.   \(n\le40\),\(m\le100\),\(\sum p_i\le800\). \(\mathcal{Solution}\)   对于每个厨师,他做他所负责…
\(\mathcal{Description}\)   Link.   一项持续 \(n\) 天的任务,第 \(i\) 天需要至少 \(a_i\) 人工作.还有 \(m\) 种雇佣方式,第 \(i\) 种每雇佣一人代价为 \(c_i\),此人会从第 \(s_i\) 天工作到第 \(t_i\) 天(包括边界).求满足条件的最小代价和.   \(n\le10^3\),\(m\le10^4\). \(\mathcal{Solution}\)   非常巧妙地题意转化.   初始时刻,有 \(+\inft…
\(\mathcal{Description}\)   Link.   给定一个 \(n\) 个点 \(m\) 条边的无向连通图,边形如 \((u,v,l,a)\).每次询问给出 \(u,p\),回答所有从 \(u\) 出发,只经过 \(a\) 值 \(>p\) 的边能够到达的点中,到 \(1\) 号点的最小距离(以 \(l\) 之和为路径距离).强制在线,多测.   \(n\le2 \times 10^5\),\(m,q\le4 \times 10^5\). \(\mathcal{Soluti…
雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海   雨真大呢.   前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1]   逃出 ZH,掉入梦麟.(   高中的同学们忘记带各种证明了啊,进门时罚站了好久,雨里实在站不住了才去签到.领了背包(还没拆封).两件衣服(挺好看 w).纪念笔(还是没拆封)--顺便在签名墙上留下了一个大号但写失误了的 "Rainybunny"(真的啊花体写 "unny" 巨难感知到底弧了几下 qwq)和一个小号但比较…
题意 有一个打字机,支持三种操作: 字符串末尾加一个小写字母 字符串末尾减一个字符 输出这个字符串 经过不超过\(n\)次操作后有\(m\)组询问:\((x,y)\),表示第\(x\)次输出第字符串在第\(y\)次输出第字符串里出现几次 \(n,m \leq 10^5\) 题解 每次加减字符就在trie树上走,输出的话记录一下在哪个结点 然后考虑询问\((x,y)\)暴力怎么做:\(x\)应该是\(y\)一个前缀的后缀,于是我们对于从根到\(y\)路径上每个结点(这相当于枚举\(y\)的后缀),…
题意 基环树上找到一个点(可以在边上)使得它到树上最远点的距离最小,输出最小距离 题解 如果是一棵树,答案就是树的直径\(/2\) 如果是基环树,那么很好证明删去环上的某一条边是不影响答案的.于是断环为链,单调队列维护\(dep+sum,dep-sum\)的最大值和次大值,然后算直径,如果两个最大值是同个结点就取一个次大,否则都取最大. #include <algorithm> #include <cstdio> using namespace std; typedef long…