题目: link 题解: 尽量走\(a\). 只要保证走\(a\)后到达的点一定可以到终点就可以走. 所以从终点开始\(dfs\)出所有能够到达终点的点. 然后再从起点开始\(dfs\)路径即可. 如果\(dfs\)出环代表字符串无现长. #include <vector> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long l…
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞定,最后无奈 \(90pts\) . 然而 \(T2\) 想到很多很奇怪的做法,结果正解在 \(28min\) 之内做出... 结果 \(T3\) 是本人最不擅长的伪期望,直接跳过,啥都没得. 来水一发 \(T1\) 的题解... 题目描述 点这里 考场思路 其实并没有什么十分特别的思路,就是一通乱…
题目描述 nnn 个格子排成一列,一开始,你在第一个格子,目标为跳到第 n 个格子.在每个格子 i 里面你可以做出两个选择: 选择「a」:向前跳 ai​​ 步. 选择「b」:向前跳 bi 步. 把每步的选择写成一个关于字符 a 和 b的字符串.求到达格子 n 的方案中,字典序最小的字符串.当做出某个选择时,你跳出了这n个格子的范围,则这个选择是不合法的. 当没有合法的选择序列时,输出 No solution!. 当字典序最小的字符串无限长时,输出 Infinity!. 否则,输出这个选择字符串.…
题意 题目链接 Sol 考虑不合法的情况只有两种: 进去了 再次进去 没进去 但是出来了 显然可以用未知记录抵消掉 直接开个set维护一下所有未知记录的位置 最优策略一定是最后一次操作位置的后继 同时我们需要记录一下每个人是否在里面 #include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10; inline int read() { char c = getchar(); int x = 0, f = 1; wh…
题目: 一个有门禁的大楼,初始时里面没有人. 现在有一些人在进出大楼,每个人都有一个唯一的编号.现在有他们进出大楼的记录,但是有些被污染了,只能知道这里有一条记录,具体并不能知道. 一个人只有进大楼,才能出大楼,如果在大楼内,他必须先出去,才能再进来. 现在想知道这个记录是否错误,如果错误,请求出最早的错误在哪一行. 注释:人有无穷多个,记录中没有提到的人也可以进出大楼. 题解: SB 题 #include <set> #include <cstdio> #include <…
题目: 给定两个整数\(l\)和\(r\),对于任意\(x\),满足\(l\leq x\leq r\),把\(x\)所有约数写下来. 对于每个写下来的数,只保留最高位的那个数码.求\([1,9]\)中每个数码出现的次数. \(1 \leq l \leq r \leq 10^9\) 题解: 转化成统计贡献. 考虑每个数落在区间内多少次. 将每种数码分开考虑即可. 由于每种数码的数的区间不是连续的,所以枚举一下即可. #include <cstdio> #include <cstring&g…
[LOJ 6213]「美团 CodeM 决赛」radar 题意 给定 \(n\) 个横坐标 \(x_i\) , 为它们选择一个不超过 \(y_i\) 的纵坐标 \(h_i\), 产生 \(c_ih_i\) 的花费. 选择之后产生的总价值是所有以 \((x_i,h_i)\) 到 \(x\) 轴的垂线段为斜边上的高的等腰直角三角形的并的面积. 最大化总价值与总花费之间的差并输出这个差. \(n\le 1\times 10^5\). 题解 首先有一个比较显然的沙雕性质, 就是某个三角形的高要么是 \(…
#6192. 「美团 CodeM 复赛」城市网络 内存限制:64 MiB 时间限制:500 ms 标准输入输出   题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接的连通图),首都为 111 号城市,每个城市售卖价值为 aia_ia​i​​ 的珠宝. 你是一个珠宝商,现在安排有 qqq 次行程,每次行程为从 uuu 号城市前往 vvv 号城市(走最短路径),保证 vvv 在 uuu 前往首都的最短路径上. 在每次行程开始时,你手上有价值为 ccc 的珠宝(每次…
LibreOJ真是吼啊! 数码 推个式子,把枚举因数转为枚举倍数.然后就发现它是根号分段的.然后每一段算一下就好了. #include <cstdio> #include <cstring> #define R register typedef long long ll; struct Data { ll num[]; inline void clear() { memset(num, , << ); } inline Data operator + (const Da…
题意:有一个栈,随机插入 $n$ 次 $0$/$1$ 如果栈顶是 $1$,然后插入 $0$,则将这两个元素都弹出,否则,插入栈顶. 求:$n$ 次操作后栈中期望的元素个数. 我们发现,按照上述弹栈方式进行,栈中元素一定是由若干个连续 $0$ 加上若干个连续 $1$ 组成. 而 $1$ 所在的联通块还在栈顶,所以我们只需考虑 $1$ 的个数即可. 令 $f[i][j]$ 表示 $i$ 次操作过后,栈中有 $j$ 个 $1$ 时期望的元素个数. 由于期望在任何时候都有可加性,所以 $f[i+1][]…