摘要:
传送门 A 氵 B 在吃了五次罚时后,我终于放弃了卡常优先队列,并发现:把余 \(0\) 看作余 \(k\),答案就是余数从大到小排列的,每种余数内部又按照下标排序。 C 我为什么没想到哈希?自我检讨:见到关于字符串判定相等/不同个数时,一定要尝试用哈希!!! 记前缀 \([0,i)\) 的哈希值为 阅读全文
摘要:
你谷的加题速度实在太慢了 被 CF 的题目薄纱 A 可以选任意次 \(i\in [1,n]\),使 \(a[1\sim i]++,a[i+1\sim n]--\)。求最少操作次数使得原数列变成非从小到大排序的。 首先判断原数列是否已经非排序。然后看每一个相邻位置 \(a[i],a[i+1]\),令 阅读全文
摘要:
A 比两边和的大小即可。 B 显然如果一个数拥有的所有二进制位的 \(1\) 被包含在 \(x\) 中,选了一定不会导致不能变成 \(x\);如果有一个 \(1\),\(x\) 对应的位上是 \(0\),则一定不能选。 因此从三个栈上面看,只要所有 \(1\) 对应到 \(x\) 上也是 \(1\) 阅读全文
摘要:
A 氵 B 把奇数和偶数拿出来分别排序,然后按下标归并,看看得出的结果是不是排好序的。 C 如果头尾同色,就找有没有 \(k\) 个位置和头尾同色; 否则从头找 \(k\) 个和头同色的,然后再在这之后找 \(k\) 个和尾同色的。 D 把每个前缀和相邻的相减,得出的结果: 有大于 \(n\) 的, 阅读全文
摘要:
A 给出一个由 \(1,-1\) 组成的序列。一次操作可以让一个数变相反。 要多少次操作,才能让整个序列和非负且积等于 \(1\)。 大 氵题。 B 定义两个数 \(A,B\) 有一个价值:每一位上的数字的差的绝对值相加。(位数不足用前导零补齐) 给出区间 \(l,r\),问在 \([l,r]\) 阅读全文
摘要:
A 题意:给一个长度为 \(n\) 的全是 \(1\) 的数列,Alice 先操作,Bob 交替。每次操作选择至少两个(可以更多)相等的数字,删除它们,在序列中加入它们的和。直到有人不能操作为止,这个人就获胜了。 问:谁有必胜策略? 很简单的结论题。 如果 \(n\geq 5\),Alice 把 \ 阅读全文
摘要:
A 只要不是全 \(1\) 即可。 B 二分完成天数。 C \(x\) 取差的 \(gcd\),\(a_{n+1}\) 见缝插针。 D 用一个 map 记录按原始操作序列,要走到 \((x,y)\) 的所有可能前缀。同时 \(px[i]\) 记录走了前 \(i\) 步到的 \(x\) 坐标,\(py 阅读全文
摘要:
A 若 \(k>1\),冒泡排序;否则判断是否已经有序。 B 初始令 \(a_i=2^{30}-1\),然后对于每个限制,让 \(a_i\leftarrow a_i\&M_{i,j},\;\;a_j\leftarrow a_j\&M_{i,j}\)。 C 答案可以视作:总和 + 一个后缀 + 一个短 阅读全文
摘要:
A 模拟。 B 模拟。 C 若原字符串中出现次数最多的次数为 \(cnt\),答案是 \(\max(n\%2,cnt\times 2-n)\)。 D 二分 \(k\),然后从后往前倒,计算出到达每个线段可能到的区间。 E \(a+b+c\) 不能进位,否则 \(digitsum()\) 就会至少 \ 阅读全文
摘要:
C 先用桶记录各个位数量。 对于每次询问,从低位到高位扫,先用掉一个当前位的,然后把当前位的全部转化成 \(cnt/2\) 个更高位的。 D 有一个思路:其实删区间可以视作删相邻两个数。(然鹅这题不是按这个思路做的) 考虑整个序列最小值,它一定不会被删。 这个最小值把序列剖成两半。递归进入左右分别计 阅读全文