Problem 2. Fruit Feast 很简单的智商题(因为碰巧脑出来了所以简单一,一 原题: Bessie has broken into Farmer John's house again! She has discovered a pile of lemons and a pile of oranges in the kitchen (effectively an unlimited number of each), and she is determined to eat as m…
Forewords 今年 USACO 的比赛变化挺大的,有部分分了,而且不再是固定十个点了(部分分只说这几个点满足这几个性质,以为十个点的我还高兴了一会,一提交,...),除此之外居然赛后还排名了.这场打得意外的顺手,但是还是有点小遗憾吧.样例强度还是有点不够高的,但 IOI 赛制嘛,也不能说啥. T1 Milk Pumping 上来看错题,打了个最小生成树,结果别人只要一条路径给弄出个树来妥妥的超过最优解爆零.仔细看题了以后发现还行,就是个有限制的最短路,每个限制枚举一遍很暴力但是数据不是很大…
题意比较难理解,就是给你n个点的树,然后给你m个修改操作,每一次修改包括一个点对(x, y),意味着将x到y所有的点权值加一,最后问你整个树上的点权最大是多少. 比较裸的树链剖分了,感谢Haild的讲解. 首先第一遍dfs预处理出size,son(重儿子). 第二遍dfs重编号. 然后线段树就可以了. 感觉就是把一棵树弄成一条一条的链,新奇的hash方法. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i <=…
t1 Convention 题目大意 每一头牛都有一个来的时间,一共有\(n\)辆车,求出等待时间最长的那头牛等待的最小时间. 解法 第一眼看到这道题还以为是\(2018noip\)普及组的t3魔鬼题,但是不一样. 我们因为要查找最大最小值,很容易就想到用二分查找. 那么直接查找答案,也就是等待的时间,然后用\(O(n)\)的复杂度的贪心验证就可以了,放的下且能放进去,那么就放. 总体复杂度是\(O(nlogn)\) \(ps.\)要注意边界的判断. t2 Convention II 题目大意…
模拟二月金组,三个半小时AK. USACO 2019 Feburary Contest, Gold T1 题意:给定一棵树,每个点有点权,每次可以进行以下操作之一: 更改一个点的点权 求某条路径上的点的点权的亦或值 思路:这这这...金组什么时候第一题都是树链剖分了... 这题是个树链剖分的模板题.(但是我捣鼓了好久... 首先将原树进行树链剖分,将每一个节点分在一条重链内.然后链与链之间用轻链连接. 对于操作1,我们只用将这个点的值在\(BIT\)中修改即可. 对于操作2,我们这样处理: 首先…
蒟蒻第一次打 USACO,只打了 Bronze 就跑路了.不得不说也有很有意思的题目.接下来就看看题目吧. 由于现在还看不到题目,只给出加工后的题目大意. T1 Lonely Photo Content 有一个长度为 \(n\) 的字符串 \(s\),仅包含两种字符:G 和 H.定义字符串 \(s'\) 是孤独的,当其仅当 \(s'\) 中恰好只有一个 G 或 H 且 \(|s'|\geqslant 3\).例如,字符串 GHGGG.GHHHH 是孤独的,而字符串 GH.GHGHG 不是.现在,…
1.Circular Barn   http://www.usaco.org/index.php?page=viewproblem2&cpid=621 贪心 #include <cstdio> #include <vector> #include <algorithm> #include <cstring> using namespace std; long long sum(long long v) { )*(*v+)/; } int main()…
1.Angry Cows http://www.usaco.org/index.php?page=viewproblem2&cpid=597 dp题+vector数组运用 将从左向右与从右向左扫描结合.先从左到右DP,确定每个干草捆向右爆炸的最小半径,再从右到左,确定每个干草捆向左爆炸的最小半径.通过扫描每个干草捆,用这两个数字来确定我们应该设置初始引爆点的最佳位置. #include <cstdio> #include <algorithm> #include <v…
Problem 1. Empty Stalls 扫两遍即可. Problem 2. Line of Sight 我们发现能互相看见的一对点一定能同时看见粮仓的某一段.于是转换成有n段线段,问有多少对线段相交.可以按左端点排序,用优先队列维护右端点,弹出比左端点小的. 为了方便计算对数,我们可以先做一遍,再把每个线段都+2*pi,再计数. Problem 3. No Change (没有看到要买的东西必须是依次的..) 如果要依次买的话就显然可以用dp搞.…
t1-Out of Sorts 题目大意 将最大的数冒泡排序到最后需要多少次操作. 分析 排序后判断距离. ac代码 #include<bits/stdc++.h> #define N 1000005 using namespace std; struct node{ int x,p; }a[N]; int n; int read(){ int w=0,x=0;char ch=0; while(!isdigit(ch))w|=ch=='-',ch=getchar(); while(isdigi…