usaco
guapisolo
已经弃掉CSDN转博客园了https://www.cnblogs.com/guapisolo/
展开
-
[USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)
题目大意:给你两个序列,可以序列进行若干次旋转操作(两个都可以转),对两个序列相同权值的地方连边,求最少的交点数记录某个值在第一个序列的位置,再记录第二个序列中某个值 在第一个序列出现的位置 ,求逆序对数量即可本以为是一道逆序对水题,结果被卡了20分。看了题解才恍然大悟,实际上,序列可以旋转 ≠ 序列成环,由于逆序对的特殊性(并不适用于环),故不能把一个序列单独旋转看成它们的相对移动,正...原创 2018-07-29 11:10:46 · 217 阅读 · 0 评论 -
poj 1743 [USACO5.1] Musical Theme (后缀数组+二分)
洛谷P2743传送门题目大意:给你一个序列,求其中最长的一对相似等长子串一对合法的相似子串被定义为:1.任意一个子串长度都大于等于52.不能有重叠部分3.其中一个子串可以在全部+/-某个值后和另一个串完全相同还是老套路了,其实只要求出每一项和前一项的差值序列,这样第三个问题可以被转化为求最长不重叠的相同子串,最后把答案+1就行了这道题竟然还是LTC大佬的男人八题!正解是...原创 2018-09-24 12:48:43 · 113 阅读 · 0 评论 -
[USACO18JAN] Lifeguards S (线段树:扫描线面积)
扫描线裸题没什么好说的注意空间不要开小了!!!#include <cstdio>#include <cstring>#include <algorithm>#define N 100100#define ll long longusing namespace std;int n,ctx;int cnt[N<<3];ll a...原创 2018-08-30 15:22:11 · 303 阅读 · 0 评论 -
[USACO18OPEN] Multiplayer Moo (并查集+维护并查集技巧)
题目大意:给你一个N*N的棋盘,棋盘上每个点都有一个权值第一问求一个权值形成的最大联通块中点的数量 第一问求两个权值共同形成的最大联通块中点的数量 提供一种并查集的做法:(感谢大佬们的题解)第一问把所有相同权值的相邻的点用带权并查集合并一下就OK了第二问,就需要一些骚操作了我们的目的是把两个不同权值的所有联通块合并,再去看它们共同形成的最大联通块的大小可以用一个结构体记...原创 2018-08-29 14:15:10 · 341 阅读 · 0 评论 -
[USACO 2009 Feb Gold] Fair Shuttle (贪心+优先队列)
题目大意:有N个站点的轻轨站,有一个容量为C的列车起点在1号站点,终点在N号站点,有K组牛群,每组数量为Mi(1≤Mi≤N),行程起点和终点分别为Si和Ei(1≤Si<Ei≤N)。计算最多有多少头牛可以搭乘轻轨。一道经典的贪心题目,每当一头牛上车的时候,如果超载,我们就优先踢出去行程终点比较远的那部分牛而 踢出哪些行程终点较远的牛 以及 哪些在车上的牛在这站到达了终点,都可以用优先队...原创 2018-08-11 23:26:45 · 210 阅读 · 0 评论 -
[USACO18JAN] MooTube (并查集 -> 维护连通性)
题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量带权并查集维护集合内元素总数路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的边,并查集维护连通性,求集合元素内总数即可#include <bits/stdc++.h>#define N 200100#define inf 0x3f3f3f3fusi...原创 2018-07-27 10:51:45 · 1472 阅读 · 0 评论 -
[USACO17JAN] Subsequence Reversal序列反转 (dfs+记忆化)
题目大意:给你一个序列,你可以翻转任意一段子序列一次,求最长不下降子序列长度 tips:子序列可以不连续,但不能破坏在原序列中的顺序观察数据范围,n<=50,很小,考虑dfs*dfs来跑区间dp可以巧妙的解决区间两端元素的置换问题 记忆化搜索,f[i][j][l][r] 代表对于区间[i,j],构成最长不下降子序列的元素值域在[l,r]时,最长不下降子序列的长度注意特判端...原创 2018-07-27 09:07:36 · 343 阅读 · 0 评论 -
[USACO17JAN] Promotion Counting晋升者计数 (树状数组+dfs)
题目大意:给你一棵树,求以某节点为根的子树中,权值大于该节点权值的节点数本题考查dfs的性质离散+树状数组求逆序对先离散我们发现,求逆序对时,某节点的兄弟节点会干扰答案所以,我们在递推时统计一次答案,递归时再统计一次答案,两者的差值就是最终结果#include <bits/stdc++.h>#define dd double#define N 100100...原创 2018-07-18 20:01:39 · 384 阅读 · 0 评论 -
[USACO17FEB] Why Did the Cow Cross the Road II P (树状数组优化DP)
题目大意:给你两个序列,你可以两个序列的点之间连边要求:1.只能在点权差值不大于4的点之间连边2.边和边不能相交3.每个点只能连一次设表示第一个序列进行到 i,第二个序列进行到 j,最多连的边数,容易得到方程:不连边:连边:实际是这样的,每个位置如果想连边,就要从能连边的位置之前找最大值,即直接转移不可取,由于最多只从9个位置转移,我们可以缩减一维,用记录b序列进...原创 2018-07-29 21:54:35 · 298 阅读 · 0 评论 -
bzoj 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)
题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门依然是后缀数组+二分,先用后缀数组处理出height每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个串的长度>=x,但据说有一种高端做法是把二分换成单调队列,能减少常数,可惜我并没有看懂......原题好像是哈希的骚操作,但网上的题解好像都是后缀数组......比上一道男...原创 2018-09-24 16:39:49 · 190 阅读 · 0 评论