题解

[AGC054C] Roughly Sorted 题解

题意 定义一种操作为交换 \(a_{i}\) 和 \(a_{i-1}\)。对于一个长度为 \(n\) 的排列,你需要操作若干次,使这个序列变合法,一个序列合法指:满足对于每一个 \(1\le i \le n\),都满足包含 \(a_i\) 的逆序对的个数不超过 \(k\),并且要求最小化操作次数。现 ......
题解 Roughly Sorted 054C AGC

poker 题解

原题链接:poker 赛时只有 \(40\) 分,改完之后感觉是一道好题,于是就来写篇题解。 题意 有 \(k\) 张扑克牌,\(n\) 种数字,每张牌都有两面,每一面分别写了一个数字,你可以选择打出这张牌的任意一面,但是不能两面同时打,也可以选择不打这张牌。有 \(q\) 个询问,每个询问给定 \ ......
题解 poker

Queries for the Array 题解

前言 这场 CF 是我赛后打的,vp 赛时没做出来,后来发现是有个地方理解错了,有一些细节没有考虑到。现在换了一种思路来写,感觉更清晰了。 做法 首先需要动态维护三个变量,\(cnt\) 和 \(finishsort\) 和 \(unfinishsort\)。这三个变量分别表示当前数字的个数,已经排 ......
题解 Queries Array for the

P3694 邦邦的大合唱站队 题解

原题链接:P3694 思路 状态设计 因为这道题 \(m\) 的范围非常小,所以可以用 \(m\) 来作为状态。设 \(dp_{i}\) 表示 \(m\) 支队伍的状态为 \(i\) 时最少让多少偶像出列。 预处理 在转移之前,我们先要预处理出序列的前缀和 \(sum_{i,j}\) 表示第 \(i ......
题解 大合唱 P3694 3694

[ABC318F] Octopus 题解

前言 赛时只做到了 E 题,赛后才来补的 F 题,还没做出来,看来还是我太菜了。看了题解过后感觉这道题的思路特别巧妙,于是就来写了这篇题解。 题意 简述一下题意。 有 \(n\) 个宝藏位置分别在 \(a_{i}\),另外有一只章鱼有 \(n\) 条触手,每条触手的长度为 \(b_{i}\)。 求有 ......
题解 Octopus 318F ABC 318

Two-Colored Dominoes 题解

前言 看了这道题的几篇题解,感觉讲的方法都比较麻烦,这里讲一个感觉比较简单的方法。 思路 首先判断是否有解。计算一下每一行和每一列的牌的数量,只要有一个是奇数就无解,否则有解。证明显然,偶数一定可以分成两组,在纸上模拟一下也可以得出。 其次看如何构造。对于竖着的牌,显然只对每行有影响,因为列上的颜色 ......
题解 Two-Colored Dominoes Colored Two

P4630 [APIO2018] 铁人两项 题解

今天学习了圆方树,并且做了一道和这道题很像的题,于是就又来做了一下这道题。 题意 给定一张不保证连通的无向图。求有多少个点对 \((a,b,c)\) 满足 \(a\) 到 \(c\) 的简单路径上经过了点 \(b\)。 思路 显然圆方树。点双缩点过后构造一颗圆方树,然后考虑如何计算答案。圆方树有一个 ......
题解 铁人 P4630 4630 2018

[ABC318G] Typical Path Problem 题解

原题链接:ABC318G 显然是圆方树。 点双缩点过后建立一颗以点 \(c\) 为根节点的圆方树,考虑什么情况是合法的。 从点 \(a\) 开始往上跳直到跳到点 \(c\),如果中间走过了某一个方点并且这个方点与 \(b\) 点有直接连边,那么就是合法的;否则不合法。 证明:如果路径中所经过的方点和 ......
题解 Typical Problem 318G Path

[ABC315G] Ai + Bj + Ck = X (1 <= i, j, k <= N) 题解

原题链接:ABC315G 前置知识:扩展欧几里得算法。如果还不会扩欧的话,建议先去做这道题。 题意 给定 \(n,a,b,c,k\)。求有多少个 \(x,y,z(x,y,z \le n)\) 满足 \(ax+by+cz=k\)。 思路 首先看到题目给出的方程式:\(ax+by+cz=k\)。我们会发 ......
题解 315G lt ABC 315

Prefix Purchase 题解

题意 给定一个长度为 \(n\) 的序列 \(ans\),初始值全部为 \(0\)。你一共有 \(k\) 个硬币,你可以选择花 \(a_{i}\) 个硬币来使 \(ans_{1}\) 到 \(ans_{i}\) 中的所有数加一。求最终能得到的 \(ans\) 序列中字典序最大的一个。 思路 首先我们 ......
题解 Purchase Prefix

Cyclic Operations 题解

前言 看这道题有好多巨佬都是用 Tarjan 来做的,在这里讲一个自认为比较简单的做法,(不到 \(30\) 行)。 题意 题意比较难讲,建议自己去看一下翻译,在这里不多赘述。 思路 首先看到题目中间给的一个每一次操作的式子:\(a_{l_{i}}=l_{(i\mod k)+1}\)。仔细观察这个式 ......
题解 Operations Cyclic

【0909 B组】切蛋糕 题解

原题链接:切蛋糕。 题意 给定一个 \(n\) 行 \(m\) 列的蛋糕,问横着切 \(i\) 刀,竖着切 \(j\) 刀后美味度最小的蛋糕的美味度尽可能大。一块蛋糕的美味度为它所含有的小块的美味度之和。 数据范围:\(1 \le n,m \le 14\)。 思路 看到数据范围,我们可以考虑一种类似 ......
题解 蛋糕 0909

Sum of XOR Functions 题解

题意 给定一个数 \(n\) 和一个包含 \(n\) 个数的序列 \(a\),求出以下式子模 \(998244353\) 的值: \(\sum_{i=1}^{n}\sum_{j=i}^{n} f(i,j)\times (j-i+1)\)。 其中 \(f(i,j)\) 的值为 \(a_{i}\oplu ......
题解 Functions Sum XOR of

Candy Party (Hard Version) 题解

原题链接:CF1868B2, 简单版:CF1868B1。 题意 有 \(n\) 个人,第 \(i\) 个人手上最初有 \(a_{i}\) 颗糖。现在每个人可以把自己手中的糖选一些给不多于一个人,同时每个人也只能接受不多于一个人的糖,选出的糖的数量必须是二的次幂。问能否能让每个人最终手上的糖的数量相等 ......
题解 Version Candy Party Hard

[ABC239Ex] Dice Product 2 题解

原题链接:ABC239Ex。 题意不多赘述。 看到求期望值,我们想到可以用期望 DP。 设 \(dp_{i}\) 表示最终结果大于等于 \(i\) 时的操作次数的期望值。 那么我们可以得到一个基本的状态转移方程:\(dp_{i}=\frac{1}{n} \times \sum_{j=1}^{n}dp ......
题解 Product Dice ABC 239

P4786 [BalkanOI2018] Election 题解

题意 给定一个长度为 \(n\) 的字符串 \(s\),有 \(m\) 个询问,每次询问最少需要删掉多少个字符才能使 \(l\) 到 \(r\) 组成的字符串当中的每一个前缀和后缀都满足 C 的数量不小于 T 的数量。 思路 因为要满足 C 的数量不小于 T 的数量,我们不妨设字符 C 的位置的值为 ......
题解 BalkanOI Election P4786 4786

P6370 [COCI2006-2007#6] KAMEN 题解

原题链接:P6370 思路 题意不多赘述。 首先这道题的 \(60\) 分暴力很好打,直接按题目中的操作做即可,时间复杂度 \(O(nr)\)。 考虑优化暴力。我们会发现很多次石头的起始点为同一列的情况,其实每一次下落的轨迹是差不多的。具体来讲应该是第一次下落的轨迹一定包含了后面每一次的轨迹。所以我 ......
题解 P6370 KAMEN 6370 2006

C0328 【1005 C组】模拟测试 斜率 题解

原题链接:斜率。 题意 在一个平面直角坐标系中,给定 \(n\) 个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近 \(\frac{P}{Q}\)。 数据范围:\(n \le 1000000\)。 思路 显然这是一道数学题,不能直接暴力去找答案。 首先我们可以弱化一下题目,求出斜率最接近 \(y ......
斜率 题解 C0328 0328 1005

P8386 [PA2021] Od deski do deski 题解

显然是一道计数 dp。 dp 状态应该是最难的一部分了,个人认为这种状态设计得比较巧妙。如果像我刚开始一样设 \(dp_{i,j}\) 表示序列中一共有 \(i\) 个数,序列最后一个数为 \(j\) 的合法方案数的话,那么方程就会变得很不好转移,因为我们不知道当前的 \(j\) 和之前的某些数能不 ......
题解 deski P8386 8386 2021

P2664 树上游戏 题解

原题链接:P2664。 题意:给定一棵树,每个点都有一个颜色 \(c_{i}\)。对于每一个点 \(i\),求出 \(\sum_{j=1}^{n}s(i,j)\) 的值。其中 \(s(i,j)\) 表示点 \(i\) 到点 \(j\) 的颜色数量。 路径相关,考虑点分治。 假设当前的重心为 \(u\ ......
题解 P2664 2664

[ABC328F] Good Set Query 题解

复习了一下边带权并查集板子。 设 \(d_{x}\) 表示当前点到它所在连通块根节点的距离。 合并点 \(x\) 和点 \(y\) 所在两个连通块时需要更新 \(d\)。因为将 \(x\) 点所在连通块的根节点的父亲节点设为了 \(y\) 点所在连通块的根节点,所以有 \(x \to y \to F ......
题解 Query 328F Good ABC

P3071 [USACO13JAN] Seating G 题解

题意:维护两个操作,区间推平,求连续 \(0\) 的个数为 \(x\) 的最前位置。 线段树。 因为需要求连续 \(0\) 的个数,所以维护区间左边连续 \(0\) 的最大个数,区间右边连续 \(0\) 的最大个数以及区间连续 \(0\) 的最大个数。 注意修改的时候要看是修改为 \(1\) 还是修 ......
题解 Seating P3071 USACO 3071

Omkar and Akmar 题解

题意:有一个 \(n\) 个点的环,以及两个人。每个人可以向环中任意一个位置放置一个 \(A\) 或者 \(B\),但是相邻的位置不能相同,不能行动者输。问最终的局面有多少种。 一个结论是:后手必胜。 证明:最终肯定不可能出现两个连续的空格,否则一定可以在其中一个上填 \(A\) 或 \(B\)。所 ......
题解 Omkar Akmar and

Animals and Puzzle 题解

原题链接:CF713D 题意:给定一个 \(n\times m\) 的地图 \(a\),\(a_{i}\) 为 \(0\) 或 \(1\)。有 \(t\) 次询问,每次询问给定一个矩形,求出这个矩形中最大的由 \(1\) 构成的正方形的边长是多少。 首先考虑预处理出 \(d_{i,j}\) 表示以 ......
题解 Animals Puzzle and

Freezing with Style 题解?

好像不是题解,算是记录。 记一个 Trick:当求路径边权的中位数的最大值的时候,可以先二分一个答案 \(mid\),然后把大于 \(mid\) 的边设为 \(1\),否则设为 \(-1\)。这样只需要看路径长度是否大于零就可以判断出有没有中位数大于等于 \(mid\) 的情况了。 当然类似到求一个 ......
题解 Freezing Style with

Square-free division (easy version) 题解

题意:给定一个长度为 \(n\) 的序列,求最少能将这个序列分成多少段使得任意一段中不存在两个数的积为完全平方数。 一个小 Trick:如果两个数乘起来为平方数,可以先将每个数的平方因子除掉,然后这两个数必然相等。于是这道题被转化为了一个区间不能有相等的值,这就很典了。 设 \(pos_{a_{i} ......
题解 Square-free division version Square

Square-free division (hard version) 题解

题意:给定一个长度为 \(n\) 的序列,求最少能将这个序列分成多少段使得任意一段中不存在两个数的积为完全平方数。你还可以将其中 \(k(k \le 20)\) 个数修改为任意的值。 一个小 Trick:如果两个数乘起来为平方数,可以先将每个数的平方因子除掉,然后这两个数必然相等。于是可以先将每个 ......
题解 Square-free division version Square

C0392 B 【1109 B组】预处理器 题解

题意:求有多少个长度为 \(n\) 的数组 \(a\) 满足以下条件。 条件一:\(l_{i} \le a_{i} \le r_{i}\)。 条件二:\(a_{i}\) 模 \(2\) 等于 \(p_{i}\)。 条件三:\(s \le \sum a_{i} \le t\)。 求答案模 \(mod\ ......
题解 C0392 0392 1109

A Simple Task 题解

这道题比较简单,简述一下思路。 考虑状压 \(DP\)。 设 \(dp_{i,j}\) 表示走到第 \(i\) 个点,之前走过的点的状态为 \(j\) 的环的数量。这里有一个细节,就是我们都钦定每个走过的第一点是整个状态中编号最小的点,这样不会重复计算。 考虑如何进行转移。如果当前点的编号比走过的最 ......
题解 Simple Task

P1450 [HAOI2008] 硬币购物 题解

原题链接:P1450 这道题被教练放到了状压 \(DP\) 的题单里面,但是正解却不是状压 \(DP\),而是背包 \(+\) 神奇容斥,只不过是用到了一些二进制状压的思想。 思路 首先看到题目立马就想到了多重背包,但是时间复杂度肯定接受不了,于是考虑优化背包。我们可以想到一个很神奇的性质:假设只有 ......
题解 硬币 P1450 1450 HAOI