Diary -「NOI 2021」酱油记】的更多相关文章

雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海   雨真大呢.   前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1]   逃出 ZH,掉入梦麟.(   高中的同学们忘记带各种证明了啊,进门时罚站了好久,雨里实在站不住了才去签到.领了背包(还没拆封).两件衣服(挺好看 w).纪念笔(还是没拆封)--顺便在签名墙上留下了一个大号但写失误了的 "Rainybunny"(真的啊花体写 "unny" 巨难感知到底弧了几下 qwq)和一个小号但比较…
  出游回来自然而然(?)地进入生产低谷的兔子只能写写游记了 qwq. Day -1 实时反馈赛制不是为防止你被数据调戏,而是给你调戏数据的机会. --鲁迅   PKU 一贯的 \(32\) 发提交实时反馈取 \(\max\) 的计分规则让我们被迫干起考试前一天做随机乱搞题的掉人品之为.(   欸这个,[NOI2008] 赛程安排,快乐调参 + 挂机颓废 + 交流取经,玩了一下午,凭借爆发的"兔品"(?)搞到全机房最高的 \(91\text{pts}\),就挺嗨.   糟糕糟糕,考前随…
\(\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}\)   当你举几个十进制的纯循环小数就不难发现规律了…
题意 有一个打字机,支持三种操作: 字符串末尾加一个小写字母 字符串末尾减一个字符 输出这个字符串 经过不超过\(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…
题目描述 现在有一棵二叉树,所有非叶子节点都有两个孩子.在每个叶子节点上有一个权值(有\(n\)个叶子节点,满足这些权值为\(1\dots n\)的一个排列).可以任意交换每个非叶子节点的左右孩子. 要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少. 输入 第一行\(n\)表示叶子结点个数 接下来每行一个数\(x\).如果\(x\)为\(0\),表示这个节点为非叶子节点,递归地向下读入其左孩子和右孩子的信息.如果\(x\)不为\(0\),表示这个节点是叶子节点,权值…
题解 Kruskal重构树:每次一条边连接两个集合,建一个新点,点权为该边边权:把这两个集合的根连向新点. 性质:(如果求的是最大生成树)叶子结点是图中实际结点:叶子到根路径上点权递减:两点间lca的权值就是这两点走最大生成树经过的最小边 然后对于这题我们建重构树然后每次倍增找到一个深度极小的祖先u,返回u子树内实结点dis的最小值即可 #include <algorithm> #include <cstdio> #include <queue> using names…
\(\mathcal{Description}\)   Link.   这是一道通信题.   对于长度为一个 \(n\),仅包含字符 X, Y, Z 的字符串 \(s\),将其中 \(n\) 个字符按任意顺序删去,定义删除方案的权值为在子串 XYZ 中删除 Y 的次数.实现两个函数: void Anna(int N, std::vector<char> S),获取字符串信息,传递不超过 \(7\times10^4\) 个 01 位用于通信: void Bruno(int N, int L, s…