platinum 2021.12 paired usaco
P9019 [USACO23JAN] Tractor Paths P 题解
Description 有 \(n\) 个区间,第 \(i\) 个区间为 \([l_i,r_i]\)。保证 \(l_1<l_2<\cdots<l_n\) 且 \(r_1<r_2<\cdots<r_n\)。其中一部分区间是特殊的,输入会给定。 如果第 \(i\) 个区间和第 \(j\) 个区间相交,那 ......
[题解]P3656 [USACO17FEB] Why Did the Cow Cross the Road I P
思路 首先,\(A\) 和 \(B\) 只会移动一个,那么,我们分开来算,我们先假定 \(B\) 会动。 不妨令 \(A\) 与 \(b\) 连边的端点为 \(x,y\)。如果有线段 \(pq\) 能与 \(xy\) 相交,一定满足如下其中一条规律: \(p < x \wedge q > y\) \ ......
ABC263G Erasing Prime Pairs 题解
这是一个只用最大流的做法。 思路 首先发现一个性质,除了 2 以外的所有质数都是奇数,而奇数 = 奇数 + 偶数,所以大多数情况下只能一奇一偶配对,唯一的特例是 \(1+1=2\)。 考虑先处理大于 1 的所有数的配对,对于所有 \(a_i + a_j\) 为质数的 \((i,j)\) 连边,由于合 ......
题解 [USACO04OPEN] Turning in Homework G
题目链接 先将所有作业按位置排序。 直接贪心显然是不行的,因为我们没有办法确定对于一个时间较久的作业,是在原地等待,还是在未来的某个节点返回,并且无法确定是那个节点,所以只能考虑 \(dp\)。 对于此类可以倒来倒去的问题,通常考虑区间 \(dp\),若设 \(f_{i,j}\) 表示完成区间 \( ......
P2951 [USACO09OPEN] Hide and Seek S 题解
Problem 题目概述 给你一个无向图,边权都为 \(1\) ,求:离 \(1\) 号点最远的点的编号、最远的距离、有几个点是离 \(1\) 号点最远的。 思路 直接用:优先队列 \(BFS\),先求出 \(1\) 号点到每个点的最短路,存到 \(dis\) 数组中,然后再求 \(max(dis[ ......
P1522 [USACO2.4] 牛的旅行 Cow Tours
Problem 题目简述 给你两个独立的联通块,求:在两个联通块上各找一个点连起来,使得新的联通块的直径的最小值。 思路 本题主要做法:\(Floyd\)。 首先,Floyd求出任意两个点之间的最短路。 枚举每一个点,求出以这个点能走到的所有点中距离的最大值。(一定在能走到的情况下,不然默认距离就是 ......
pair<int,int> 有序对使用方法
pair<int, int> 是 C++ 标准库中的一个模板类,用于存储两个值的有序对。它的第一个值的类型是 int,第二个值的类型也是 int。 可以将整个 pair<int , int> 理解为一个有序对数据类型,所以它也只能接受有序对数据类型为了简化代码,可以使用 typedef 或 defi ......
abc212G - Power Pair
G - Power Pair 如果知道了原根的话这题就会简单很多 r是p的原根 \(r^a=x, r^b=y\) 那么$$r^{an} \equiv r^b (mod\ p) $$ 根据原根的性质 \[an \equiv b(mod\ p-1) \]\[an-k(p-1)=b \]令n=p-1 由裴 ......
P3147 [USACO16OPEN] 262144 P
Link 这个题有一个很特殊的点,就是最大值不会超过28,可以想一下最多可以合并多少次。 那么常规的区间dp是不能使用的,就要采用特殊的形式, 因为很难的确定应该怎么转移,那么就换一种思路,转移的对象变成另外一个端点。 \(dp_{i,j}\) 表示\(i\)在左边,达到\(j\)的话的右端点位置 ......
P6066 [USACO05JAN] Watchcow S
prologue 这个题这么水的一个板子题。 analysis 这个题目我们正反建两条边,在跑欧拉回路的时候,看这个边是不是被走过,走过就不走,跳过这个边。如果没走,就走这条边并且标记这个边走过了。 code time #include <bits/stdc++.h> using namespace ......
P5838 [USACO19DEC] Milk Visits G
P5838 [USACO19DEC] Milk Visits G Luogu P5838 Solution 提供一种奇特的 \(\mathcal O(\dfrac{n\sqrt n\log n}{\omega})\) 的做法。 树链剖分转化成序列问题。然后变成了询问一个区间 \(l,r\) 是否存在 ......
洛谷P3612 [USACO17JAN] Secret Cow Code S
[USACO17JAN] Secret Cow Code S 题面翻译 奶牛正在试验秘密代码,并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用。 给定一个字符串,让后面的字符旋转一次(每一次正确的旋转,最后一个字符都会成为新的第一个字符)。也就是说,给定一个初始字符串,之后的每一步都会 ......
P3128 [USACO15DEC] Max Flow P
P3128 [USACO15DEC] Max Flow P 有好几种解决方法,这里讲第一种树状数组 主要是线段树没调好 区间修改,单点查询,很明显我们可以用树状数组,简单又方便 树状数组 #include<bits/stdc++.h> using namespace std; const int N ......
洛谷P2341 [USACO03FALL] 受欢迎的牛 G
P2341 受欢迎的牛 G 题解 这题我们需要了解强连通分量 一、定义 在有向图 \(G\) 中,如果两个顶点 \(u\) , \(v\) 间有一条从 \(u\) 到 \(v\) 的有向路径,同时还有一条从 \(v\) 到 \(u\) 的有向路径,则称两个顶点强连通。如果有向图 \(G\) 的每两个 ......
P4824 [USACO15FEB] Censoring S
P4824 [USACO15FEB] Censoring S KMP+栈 同样的套路,先找B的最长前后缀,然后与A匹配 不同的是要删除A中的B,特殊的是删除之后可能会产生新的B 那我们可以利用栈的思想,利用f数组,记录A每一位置上B的匹配程度,这样删除时,直接回到上一个匹配程度,以防漏掉。 利用栈记 ......
一个树状数组求逆序对的进阶 [USACO17JAN] Promotion Counting P
题面就这样,就是在树上求一个逆序对但是我笨笨地求了对于每一个下属有几个上司能力比他低还一遍就写对了,结果发现看错题目了难得一遍过,但是没有完全过 ......
P9013 [USACO23JAN] Find and Replace S
前言 这是考试的时候放的一道题,考的时候没做出来。 调了一个晚上,心态爆炸,故作此篇。顺便,鸣谢泥土笨笨大佬的题解,给我的代码提供了强有力的对拍参照。 正题 首先看到题目,虽然字符串长度不超过 \(10^5\),但是还是嫌多;再一看,至多只有52个字符。 那么从这个数据范围入手,思考可以按照变换前后 ......
P5836 [USACO19DEC] Milk Visits S - 洛谷题解
题目链接 :[P5836] USACO19DEC] Milk Visits S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题可以用并查集来解决。 题目中每个结点只有两个状态:H和G。那么我们可以推断出,只有当起点和终点间每个结点的状态相同但是起点(或者终点或起点到终点之间 ......
题解 P9019 [USACO23JAN] Tractor Paths P
显然,对于给定的 \(l,r\),最短路可以贪心求出,即每次走与当前区间相交且左端点最大的区间,这个可以用倍增加速。 定义 \(f_{i,j}\) 表示从区间 \(i\) 往右走 \(j\) 步后到达的区间,\(g_{i,j}\) 表示往左走的情况。 正反遍历一下即可求出 \(f_{i,1}\) 和 ......
题解 P8905 [USACO22DEC] Strongest Friendship Group G
显然不同连通块互不影响,答案分开算。 对于当前连通块,假如我们希望所选的子图中最小的度数为 \(x\),那么只需要保留度数大于等于 \(x\) 的所有点,然后将这些点能连的边连上,再保留其中度数合法的,以此类推,最后剩下的点数就是子图最大的大小。 这些操作就相当于,对于当前图,如果度数最小的点不满足 ......
1820BThe BOSS Can Count Pairs[分块]
Problem - B - Codeforces 题意是给n个a和b,1<=a,b<=n,问有多少ai*aj==bi+bj,i<j ,2e5的数据规模 看一眼数据规模,a,b都是小于等于n的,意味着如果ai*aj>n那么就对答案无贡献,或者说,对于一个ai,剩下数中可能能对答案产生影响的aj,一定是 ......
CF359D Pair of Numbers
原题 翻译 感谢\(xjk\)提供,%%% 先说一个带\(\log\)的做法 首先,区间满足条件的要求即为\(\min_{i=l}^{r}{a_i} = gcd_{i=l}^{r}{a_i}\),这是显然的(我甚至想错了QwQ) 我们考虑固定住这个区间的最小值\(x\),我们发现假如一个区间\([L ......
CF1542E1 Abnormal Permutation Pairs (easy version) 题解
CF1542E1 Abnormal Permutation Pairs (easy version) 题解 不会 Hard version 对于第一个限制字典序,我们可以考虑枚举前 \(i\) 位相同,然后考虑后 \(n-i\) 位。我们只需要保证 \(p_{i+1} < q_{i+1}\) 即可。 ......
Beautiful Pair
Beautiful Pair 简要题意: 给出一个长度为 \(n\) 的序列。要求它的子串中,满足左右端点之积小于等于子串中的最大值的个数。 思路 肯定要求出不同的 \([l,r]\) 中的最大值。显然一个一个枚举区间会超时。所以考虑当 \(a_i\) 作为最大值的时候,会产生哪些区间,这些区间满足 ......
P3101 [USACO14JAN] Ski Course Rating G
思路 晃一眼题目,这不和这道题一样吗? 但是再仔细一看,有有些不一样,要求了起点至少到多少个点,不要求起点互通,求的也不是最小的 \(d\),而是 \(d\) 之和。 首先,很容易地发现,这道题再去二分肯定不现实,每个点都去二分一次,所需要的时间也很恐怖。 所以我们尝试从其他的方面入手。 可以发现, ......
P1653 [USACO04DEC] Cow Ski Area G
如果把每个方格看作一个点,就是这道题的子任务 B 了。 思路 首先看到目标是保证任意方格可以互通,就可以想到应该是一道强连通分量的题,只要按照题目的要求建图,就可以得到一个有向图,那么用 tarjan 缩点后,就可以得到一个无环的有向图。 这样一个无向图,对于每个有入度有出度的点,肯定都是按照顺序走 ......
【题解】CF1830B The BOSS Can Count Pairs
你考虑,我们观察数据范围,发现可以是 \(O(n\sqrt n) / O(n\log n)\) 的,我们又看到乘法,便有几个大概的想法: 数论分块 \(O(\sqrt n)\) 枚举其中一个乘数 还有什么……(笔者学识浅陋,读者可以帮忙补充) 我们可以找到两种 \(O(n^2)\) 做法: \(O( ......
P5851 [USACO19DEC] Greedy Pie Eaters P
如果只考虑选哪些奶牛吃派和奶牛吃派的顺序,就会陷入僵局,我们不妨考虑派的情况。 令 \(f_{i,j}\) 表示 \(i\sim j\) 这一段派,能满足一些奶牛,它们的最大可能体重。因为一头奶牛至少吃一个派,我们只关心区间内奶牛吃派的相对顺序,所以转移可以枚举当前区间最后吃的这头奶牛吃的某个派 \ ......