题解p9669 jinan order

ARC166B题解

发现还没有和我一样的做法。 觉得 B 比 A 好想的多。 令 \(A_i\) 为 \(a_i\) 变成 \(A\) 的倍数最少次数,\(B_i,C_i,AB_i,AC_i,BC_i,ABC_i\) 同理。 那么我们就有 \(A_i=(A-A\bmod {a_i})\bmod A\),其他同理。 这一 ......
题解 166B ARC 166

CF424C的题解

简单题。CF 评分才 *1600。 可以直接先把 \(Q\) 拆成两部分。 \[\begin{aligned} \large a&=\oplus^n_{i=1}p_i\\ \large b&=\oplus^n_{i=1}\oplus^n_{j=1}\ \ \ (i\bmod j)\\ \large ......
题解 424C 424 CF

CF580B的题解

见到有单调性、有限制的区间问题,很自然地就会想到用尺取去做。 先按工资升序排序,然后套上尺取就行了。 不会尺取的可以根据这道题去学。 时间复杂度 \(O(n\log n)\)。 #include<cstdio> #include<algorithm> #define ll long long usi ......
题解 580B 580 CF

ARC166A的题解

略带一点思维吧。 个人认为比 B 难想。 先来考虑弱化版的题面: Case 1 如果 \(X\) 串和 \(Y\) 串都没有字母 C,如何判断是否有解? 观察操作,我们能发现这个操作的本质实际上是让一个位于前面的字母 A 挪到其后面的任意的位置,并且前后两个 A 的相对位置不会发生改变。 所以,如果 ......
题解 166A ARC 166

[题解]CF1881G Anya and the Mysterious String

思路 发现如果一个字符串中有长度大于等于 \(2\) 回文子串,必定有长度为 \(2\) 的回文子串或长度为 \(3\) 的回文子串,并且形如:aa 和 aba。 所以考虑用线段树这两种情况。维护一段区间的最左、次左、最右、次右的元素,同时用两个标记变量 \(f_1,f_2\) 分别表示这个区间中是 ......
题解 Mysterious String 1881G 1881

[ABC207F] Tree Patrolling 题解

[ABC207F] Tree Patrolling 弱智 DP 题,设 \(f(i,j,0/1/2)\) 表示在点 \(i\),子树中有 \(j\) 个点被覆盖,且 \(i\) 点自身状态是未被覆盖/被自身覆盖/被某个儿子覆盖,然后树上背包更新就行了。 代码: #include<bits/stdc+ ......
题解 Patrolling 207F Tree ABC

AT_tdpc_tree 木 题解

木 弱智 DP 题,直接设 \(f_i\) 表示 \(i\) 子树内染色的方案数,然后每次合并一个点与它的儿子即可(具体而言,因为儿子间独立,所以方案数就是二项式系数)。 需要注意的是因为第一条边可以在任意位置,所以要以每个点为根各 DP 一次。但是这样每条边会被算两次,所以乘以 2 的逆元即可。 ......
题解 AT_tdpc_tree tdpc tree AT

洛谷 P4749 [CERC2017] Kitchen Knobs 题解

Kitchen Knobs 首先,一个 trivial 的想法是,因为每个旋钮如果上面的数字并非全部相同则其必有唯一最优位置,故直接扔掉那些全部相同的旋钮,对于剩余的求出其最优位置。明显此位置是一 \(0\sim6\) 的数。 因为是区间同时旋转,所以转成数之后就是区间加同一个数。 一个经典套路是差 ......
题解 Kitchen P4749 Knobs 4749

[AGC020F] Arcs on a Circle 题解

Arcs on a Circle 首先,一个非常自然的想法是尝试断环成链。怎么断呢?我们发现,选择最长线段的起点处截断是个非常好的选择,因为不可能有一个线段完全覆盖它。这之后,一个紧接着的想法就是 DP。 假如把描述中的全部“实点”改成“整点”的话,那么这题是比较 trivial 的,可以通过随便状 ......
题解 Circle 020F Arcs AGC

[ARC072E] Alice in linear land 题解

[ARC072E] Alice in linear land 首先,一个 trivial 的想法是记 \(f_i\) 表示第 \(i\) 步前离终点的距离,于是 \(f_i=\min\Big(f_{j-1},|f_{j-1}-d_i|\Big)\)。 然后,我们设 \(f_i'\) 表示在修改第 \ ......
题解 linear Alice 072E land

CF1542E2 Abnormal Permutation Pairs (hard version) 题解

Abnormal Permutation Pairs (hard version) 两个限制:字典序小、逆序对大,一个显然的想法就是确保一对关系,统计另一对关系。 确保哪一对呢?我们想了想,决定确保字典序小,因为字典序是可以贪心的。 具体而言,我们考虑两个排列自第 \(i\) 位开始出现了不同。这样 ......
题解 Permutation Abnormal version 1542E

[AGC046D] Secret Passage 题解

Secret Passage 稍微观察一下就能发现,任一时刻,我们剩下的东西必然是一段定死了的后缀,加上一些可以任意塞位置的 0 与 1。考虑任意一个由上述时刻生成的串,就会发现它与该后缀的最长公共子序列长度即为后缀长度,且还剩余一些 0 与 1。 于是考虑模拟最长公共子序列的过程。设 \(g_{i ......
题解 Passage Secret 046D AGC

CF568E Longest Increasing Subsequence 题解

Longest Increasing Subsequence LIS 问题有两种主流 \(O(n\log n)\) 解法,最常见的树状数组法,以及不那么常见的二分法。然后考虑本题,发现一个神奇的思路就是求出 LIS 后倒序复原出数组。 进一步思考后发现,因为本题是 LIS(Longest Incre ......
题解 Subsequence Increasing Longest 568E

Atcoder Beginner Contest 324 G Generate Arrays 题解-Treap

为了更好的阅读体验,请点击这里 题目链接 套上平衡树板子就能做的很快的题,然后因为是指针存树,因此交换只需要把序列大小较小的挨个拿出来插到相应的地方即可。复杂度 \(O(N \log^2 N)\)。 但是一定要记住 不可以直接使用 std::swap 交换包含带有指针的类的实例(如代码中的 Trea ......
题解 Beginner Generate Atcoder Contest

CF914B题解

一道简单的博弈论。 思路 我们可以先记录每张牌的个数,如果这个牌的个数为奇数,则 Conan 胜利,如果全部为偶数,Agase 胜利。 证明 如果说所有牌为偶数,那么无论 Conan 取哪张牌,Agasa 都可以和他取一样的,最终让 Conan 失败。 如果不满足,那么 Agasa 会无法操作。 A ......
题解 914B 914 CF

精选题解汇总

Part 1 比赛题解 CF1873 CF1203 CF1234 CF1249 Part 2 难题题解 P1124 P6346 P2198 P7974 P4814 ......
题解

P6346 题解

题目大意 如果 \(\texttt{Kevin}\) 想和第 \(i\) 个人交朋友,要么需要认识 \(a_i\) 个人,要么付出 \(b_i\) 的代价,他让你使 \(\texttt{Kevin}\) 与所有的人交朋友。 解题思路 如果想水到 \(15\) 分,也就是所有 \(b_i\) 都等于 ......
题解 P6346 6346

P2198 题解

解题思路 激光塔一定在最后。\(f_{i,j}\) 表示前 \(i\) 个位置放 \(j\)(\(j\le i\))个放射塔,那么 \(i-j\) 个干扰塔的伤害。 若第 \(i\) 个位置放放射塔:\(f_{i,j}=f_{i-1,j-1}+(j-1)\times g\times[t+b\time ......
题解 P2198 2198

P7974 题解

解题思路 首先可以确保每一次列的方向一定不会与 \(s\) 到 \(t\) 的方向相反。 不妨设 \(l=\min\{s,t\}\),\(r=\max\{s,t\}\)。 对于每次移动,所花体力值如下: 显然,从 \(l\) 到 \(r\),一定要翻过 \([l,r]\) 间最高的一个,区间最大我们 ......
题解 P7974 7974

P4814 题解

解题思路 对于每条边 \((u,v)\),权值为 \(w\),假设存在一条经过这一条边的路径,其最短距离为 \(a\) 到 \(u\) 的最短路加上 \(v\) 到 \(b\) 的最短距离加上 \(w\),若这个值都大于 \(d\),则不可能关闭这条边。 由于边权非负,所以可采用 dijkstra ......
题解 P4814 4814

P1124 题解

题目大意 一个长度为 \(n\) 的字符串 \(S\),进行以下操作。 假设 \(s\) 为 acbdef,每一次将首字母移至末尾,得到 \(6\) 个字符串: acbdef cbdefa bdefac defacb efacbd facbde 将每个字符串的首字母排序: acbdef bdefac ......
题解 P1124 1124

C++常见入门题题解

前言 因为本人目前比较菜,所以给出的题解都是按照自己的学习进度来的,所以难度是一个循序渐进的过程,由于本人水平有限,望读者能够指出谬误,共同进步。 回文数输出 #include <bits/stdc++.h>//万能头 using namespace std; int main(void) { ve ......
题解 常见

题解 CF1651F【Tower Defense】

一个塔防游戏。 一共有 $n$ 个塔按 $1 \sim n$ 的顺序排成一列,每座塔都有魔力容量 $c_i$ 和魔力恢复速率 $r_i$。对于一座塔 $i$,每过一秒它的魔力 $m_i$ 会变为 $\min(m_i+r_i, c_i)$。每座塔初始时满魔力。 一共有 $q$ 个怪物,每个怪物有两... ......
题解 Defense 1651F Tower 1651

【题解 CF840C & P4448】 On the Bench & 球球的排列

On the Bench 题面翻译 给定一个序列 \(a(a_i\le 10^9)\),长度为 \(n(n\le 300)\)。 试求有多少 \(1\) 到 \(n\) 的排列 \(p_i\),满足对于任意的 \(2\le i\le n\) 有 \(a_{p_{i-1}}\times a_{p_i} ......
题解 amp Bench P4448 4448

P9506 题解

blog。First solution /kx。 容易想到断环成链。打开标签发现是 DP,于是就可以 DP 了。 code,时间复杂度 \(O(\text{能过})\)。 ......
题解 P9506 9506

NOIP2018PJ T3 摆渡车(2023.10第二版题解)

题目链接 题意: 时间轴上分布着$n$位乘客($1\le n\le 500$),$i$号乘客的位置为$t_i$(0\le t_i\le 4\times 10^6),用互相距离不小于$m$的车次将时间轴分为若干部分,并管辖以自己为右端点的这个区间(除了第一趟车包括$0$,其他车次左开右闭),求最小费用 ......
题解 摆渡 2023.10 NOIP 2018

AT_arc100_b 题解

题意 这道题是让我们把一段区间分成四个不为空的连续子序列,并算出每个区间的和,最后用四个和的最大值减去最小值,算出最终答案。 分析 大家首先想到的肯定是暴力法用三个循环枚举四个区间,对于每一个区间,在单独算和,这样的时间复杂度 $O(n^4)$,肯定会超时。 现在我们进行优化:最后求和的过程我们可以 ......
题解 AT_arc 100 arc AT

SP26719题解

考虑动态规划。 思路 设 \(dp_{i,j}\) 为 \((1,1)\) 到 \((i,j)\) 的方案数,而如果要到这个点,肯定是从左边和上边来。 所以递推公式为:\(dp_{i,j}= dp_{i,j-1} + dp_{i-1,j}\)。 预处理:将横或纵坐标为 1 的点赋值为 1,因为到达这 ......
题解 26719 SP

P9700题解

思路 看数据范围,发现范围很小,直接用搜索。 搜索时枚举每个点,如果有棋子就枚举方向,如果这个方向合法,则将剩余棋子数减一,继续搜索。 搜索时参数只需要传当前棋子数就行了。 有以下几点需要注意 多组数据每次需要初始化。 判断是否合法时要注意。 每次记得回溯棋子。 AC CODE #include<b ......
题解 P9700 9700

CF1873B题解

这题其实可以数学方法差小积大解决。 差越小积越大,那肯定是让最小的数加一啦。将所有数的积除以最小值再乘上最小值加一。 #include<bits/stdc++.h> using namespace std; signed main(){ int T; cin>>T; while(T--){ long ......
题解 1873B 1873 CF