![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
usaco
nanhan27
高中生
展开
-
USACO2014MarchSilver Watering the Fields
【分析】 这应该算是一道最小生成树的模板题,只需要把所有的边先预处理出来,接下来就直接Kruskal。【代码】#include<cstdio> #include<iostream> #include<algorithm> #define ll long long #define M 2005 using namespace std; int fa[M]; int tot; ll ans; stru原创 2016-12-28 20:02:46 · 289 阅读 · 0 评论 -
USACO2014JanuarySilver Cross Country Skiing
【分析】 算是一道简单的搜索题,这个最小疲劳值显然是越大越好,符合单调性,所以用二分来枚举他的最小疲劳值,再随便从一个“1”开始走,看最后是否走完了所有的“1”。【代码】#include<cmath> #include<vector> #include<string> #include<cstdio> #include<cstring> #include<iostream> #include<al原创 2016-12-29 14:30:26 · 361 阅读 · 0 评论 -
USACO2014JanuarySilver Bessie Slows Down
【分析】 这完全就是一道水题,只需要将两种事件放在两个队列里,用当前的时间和速度去判断下一个事件应该是哪个,就做那个,然后弹掉。 可是遭天杀的翻译却没有将结果四舍五入保留整数,从而导致了放在A题的位置,却出现了10个人只有几个人强行**提交调试**A掉了,剩下的人却只有10分! 行走过程中的时间和路程都很可能是小数!【代码】#include<queue> #include<cstdio> #i原创 2016-12-28 22:24:28 · 266 阅读 · 0 评论 -
USACO2014MarchSilver Mooo Moo
【分析】 我们遇到的困难是如何知道如何用最小的奶牛数去处理一个定量的声音量。 这就自然引入了01背包。 可惜我突然忘记了这是有限背包,所以for的顺序应该反过来的,调了一会儿才发现。【代码】#include<queue> #include<cstdio> #include<vector> #include<cstring> #include<iostream> #include<algorit原创 2016-12-28 20:07:20 · 426 阅读 · 0 评论 -
USACO2014FebruaryGold Cow Decathlon
【分析】 既然他的数据范围(n<=20)都这么明显了,要么是暴搜,要么是二进制枚举,要么是状压。 经过一番简单的考虑(实验证明,暴力只有30分),这应该是状压了。 关键是这个状压的状态该怎么定义? 我们将dp[]定义为使用这些牛所能达到的最大钱数。并且新加入的是用来做第(之前的个数+1)个比赛的。 __builtin_popcount(i)这个函数只是求这个二进制数中有多少个1的,其实就是原创 2016-12-28 21:57:31 · 492 阅读 · 0 评论 -
USACO2014FebruaryGold Roadblock
【分析】 首先我们考虑到,必定在最短路的边进行修改答案才会改变,那我们先跑两遍dijkstra,再枚举边,如果是最短路上的,就改掉,然后跑dijkstra。 我使用vector的,所以还是有点慢。【代码】#define M 25005 #include<queue> #include<vector> #include<cstdio> #include<cstring> #include<iost原创 2016-12-28 21:39:53 · 294 阅读 · 0 评论 -
USACO2014FebruarySilver Secret Code
【分析】 拿到这道题的时候,就直接想到了记忆化搜索。 不过将原字符串拆分一共有4种方法,所以要注意不要遗漏掉。 我这里采用的是string,因为它的函数比较多,用起来也比较方便,然而它的速度也有一些慢。【代码】#include<map> #define mod 2014 #include<cstdio> #include<string> #include<cstring> #include<i原创 2016-12-28 21:29:29 · 246 阅读 · 0 评论 -
USACO2014FebruarySilver Auto-Complete
【分析】 首先我们知道以str为前缀的字符串会在排序后连在一起,那么我们直接用lower_bound就可以解决了。 之后,小c以这道题教了我们一个Trie树的写法。【代码1】#include<cstdio> #include<vector> #include<string> #include<cstring> #include<iostream> #include<algorithm> usin原创 2016-12-28 21:21:29 · 308 阅读 · 0 评论 -
USACO2014MarchGold The Lazy Cow
【分析】 我们首先可以看出这里的距离k是曼哈顿距离,也就是坐标的绝对值相加。 可是我们脑子里并没有关于这类距离的算法。首先,我们将一个点所能覆盖到的面积画出来,不难发现,这是一个竖着的正方形。之后的所有操作必须建立在一个倾斜的坐标轴上。所以,先学学怎样翻转坐标轴。这里有一个链接: http://blog.csdn.net/wqvbjhc/article/details/6338740 我们显原创 2016-12-28 21:04:39 · 613 阅读 · 0 评论 -
USACO2014MarchGold Counting Friends
【分析】 我们先模拟一下样例,找到一个自认为是对的规律。如果这个序列是对的,先从大到小排序,那么当前的操作是将序列中最大的变成0,然后顺次每个减一。经过多次的检验,这个规律好像是对的。 然而每次操作后,序列就变得不太有序了,也就是被截断成了两块,可是这两块内部也是有序的。接下来就是合并。直接sort是可以过的,但是既然有这个性质,我们可以直接merge。#define M 505 #includ原创 2016-12-28 20:46:03 · 564 阅读 · 0 评论 -
USACO2014JanuaryGold Building a Ski Course
【分析】 首先,我们应该得出一个性质:如果当前的正方形的边长b能够完成工作的话,那么(b-1)一定也能完成这项工作,说明这个边长是具有单调性的。 那我们就想到了二分(可能吧),先停一下。 关键是对于原始的一幅图,我们应该怎样来修改呢?有什么贪心的做法吗?实验证明是没有的。不知道该怎么去下手,这就进入了一个死胡同。 我们先退一步。最后所形成的图一定包括一个边长为b的种类完全相同的正方形。 如原创 2016-12-29 14:53:51 · 626 阅读 · 0 评论