![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
USACO
文章平均质量分 68
everlasting__
'-'
展开
-
bzoj 4756: [Usaco2017 Jan]Promotion Counting
→题目链接←【想说的话】没有写过树状数组...这算是我 树状数组初体验 ?【题解】先按能力值从大到小排序,然后找到每个牛的名次之后一边dfs,一边用树状数组统计【代码】#include#define MAXN 100010using namespace std;inline int rd(){ int x=0,y=1;char原创 2017-12-01 14:48:47 · 306 阅读 · 0 评论 -
bzoj 3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四
→题目链接←一眼最短路但是建边是问题,n^2建边一定是不可行的所以我们以高度为关键字排下序,然后对于每个点,只需要向两边扫,能建边就建边,直到高度相差超过2注意:建边要建双向边代码:#include#include#include#include#include#define inf 23333333using namespace std;原创 2017-09-28 13:07:01 · 327 阅读 · 0 评论 -
bzoj 3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二
→题目链接←裸线段树查询最小值代码:#include#include#includeusing namespace std;struct node{ int l,r,Min;}tree[30000*4];void build(int num,int l,int r){ tree[num].l=l; tree[num].r=r; if(l==原创 2017-09-28 11:16:10 · 271 阅读 · 0 评论 -
3301: [USACO2011 Feb] Cow Line 康托展开
→题目链接←就是一道裸的康托展开开始写的时候我发现我并没有写过并且也不太会然后开始了自己YY居然一发A了!!!!代码:#include#include#include#define ll long longusing namespace std;int n,m;ll num[22];void cal(){ int sum[22原创 2017-09-11 20:45:28 · 235 阅读 · 0 评论 -
bzoj 3361: [Usaco2004 Jan]培根距离
→题目链接←双向边!然后就从1开始跑SPFA最后对于每个点的dis值取max代码:#include#include#include#include#include#include#define inf 233333333using namespace std;int n,m;vectorv[20020];bool vis[20020];原创 2017-09-27 20:36:05 · 268 阅读 · 0 评论 -
bzoj 4749: [Usaco2016 Dec]Moocast dfs
→题目链接←很水的dfs题n^2的dfs,把每个点都当作起点跑一遍,最后取max代码:#include#include#include#includeusing namespace std;struct node{ int x,y,p;};int n;node a[220];bool f[220];int ans=0;double c原创 2017-09-02 13:25:06 · 435 阅读 · 0 评论 -
bzoj 4996: [Usaco2017 Feb]Why Did the Cow Cross the Road II
bzoj没有题面....链接是到洛谷的→题目链接←维护有多少坏掉的路灯的前缀和然后对于每个sum[i]-sum[i-k]取max就好代码:#include#include#include#includeusing namespace std;int n,k,m;int sum[100010];bool f[100010];in原创 2017-09-02 01:41:37 · 320 阅读 · 0 评论 -
bzoj 4511: [Usaco2016 Jan]Subsequences Summing to Sevens
→题目链接←维护一个前缀和,但是它维护的是前缀和%7然后如果存在sum[i]==sum[j],显然的是这中间的一段是可以被7整除的所以枚举余数,每次找到左右端点,取一个max就好代码:#include#include#include#includeusing namespace std;int n;int sum[50050];bool f[7原创 2017-09-02 01:24:47 · 386 阅读 · 0 评论 -
bzoj 3385: [Usaco2004 Nov]Lake Counting 数池塘
→题目链接←从左上角开始扫,扫到一个W时就开始dfs把经过的地方W都变成.只要有W在周围就接着dfs然后这么一次dfs下来就找到了一个池塘最后统计下数量代码:#include#include#include#includeusing namespace std;char c[110][110];int tox[8]={-1,-1,0,1,原创 2017-09-25 15:20:29 · 407 阅读 · 2 评论 -
bzoj 3386: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
→题目链接←终于从silver进化成gold啦!裸的最短路居然WA了两发...第一次没看到是无向边...第二次没看到这道题n m居然是反的...裸的SPFA→我的板子←代码:#include#include#include#include#include#include#define inf 233333333using n原创 2017-09-25 15:06:10 · 451 阅读 · 0 评论 -
bzoj 4781: [Usaco2017 Open]Paired Up
→题目链接←每次把最大的牛与最小的牛合并,最终结果一定是最大值最小的所以我们用优先队列维护一个大根堆,再维护一个小根堆,每次合并更新下答案就好代码:#include#include#include#include#include#includeusing namespace std;struct node1{ int sum,val,num;原创 2017-08-30 09:25:56 · 353 阅读 · 0 评论 -
bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
→题目链接←对于每个点我们维护两个bool数组vis[0][i][j]=true表示第j时刻Bessie来过点ivis[0][i][j]=true表示第j时刻Elsie来过点i然后我们从1号点开始,每当vis[0或1][i][j]==false时就变成true,并放到队列里最后vis[0][n][1~maxm]与vis[1][n][1~maxm]都为true时,第三维的原创 2017-08-29 20:37:06 · 342 阅读 · 0 评论 -
bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易 最短路
→题目链接←裸最短路代码:#include#include#include#include#include#define ll long long#define inf 233333using namespace std;int n,m;vectorv[50050];int dis[50050];queueq;int main(){ s原创 2017-09-06 20:01:32 · 338 阅读 · 0 评论 -
bzoj 4396: [Usaco2015 dec]High Card Wins
→题目链接←每个牌肯定是管第一个比它小的牌是最优的所以我们只需要从小到大记录对面目前还剩几张牌,手里只要有能管的就管上一个代码:#include#includeusing namespace std;int n;bool f[100010];int ans=0;int main(){ scanf("%d",&n); for(int i=0; i原创 2017-08-28 20:28:15 · 473 阅读 · 0 评论 -
bzoj 3366: [Usaco2004 Feb]Breeding 奶牛饲育
特别鸣谢+膜拜ljss→题目链接←题目大意就是有多少种不同的方案能乘出n把所有的约数都暴力地找出来,然后dp[i]表示n=a[i]时有多少种方法可以得到这个数显然的是如果a[i]%a[j]==0那么dp[i]+=dp[j]初始时dp[i]都为1最后那个dp就是答案代码:#include#include#includeusing nam原创 2017-08-24 11:04:21 · 466 阅读 · 0 评论 -
bzoj 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
→题目链接←跑一遍SPFA然后就完事了代码:#include#include#include#include#include#include#define inf 233333333using namespace std;int n,m;vectorv[20020];bool vis[20020];int dis[20020];void原创 2017-09-13 20:29:30 · 266 阅读 · 0 评论 -
bzoj 3359: [Usaco2004 Jan]矩形
→题目链接←先令所有的矩形的x,y都是x再以x为第一关键字,y为第二关键字,从小到大排序然后就变成了找一个二维的最长上升子序列n*注意两个矩形全等不算包含代码:#include#include#include#include#includeusing namespace std;struct node{ int x,y; friend原创 2017-09-28 13:50:14 · 270 阅读 · 0 评论 -
bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级
→题目链接←一眼分层图...然而我还是写挂了好几次qwq代码:#include#include#include#include#includeusing namespace std;struct node{ int to,len;};struct node1{ int now,ceng,len; node1(int x,int y,int原创 2017-09-20 10:37:01 · 396 阅读 · 0 评论 -
bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛
→题目链接←最开始看到是USACO就想n^2搞,但是看到100000就虚了...先以左端点从小到大为第一关键字,右端点从大到小为第二关键字排序这样就会保证,当我们从扫到 i 时,如果MaxRight大于等于 i 的right,那么 i 一定是不可行的所以如果碰到这样的状况,就令ans=min(ans,i) *下标从0开始复杂度nlogn这...应该算贪心吧原创 2017-09-28 10:07:59 · 263 阅读 · 0 评论 -
bzoj 4094: [Usaco2013 Dec]Optimal Milking 线段树
→题目链接←【想说的话】再次手误...【题解】对于每个区间维护四种最大值1、选左端点不选右端点2、选右端点不选左端点3、两个端点都选4、两个端点都不选然后用线段树搞一搞就好了注意下pushup的转移【代码】#include#define MAXN 40040typedef long long ll;using na原创 2017-11-17 09:52:18 · 241 阅读 · 0 评论 -
bzoj 1782: [Usaco2010 Feb]slowdown 慢慢游
→题目链接←【想说的话】总是因为一些手误导致调半天...【题解】按dfs序建线段树,然后每次先单点查询再区间加1【代码】#include#define inf 1000000000#define MAXN 100010using namespace std;inline int rd(){ int x=0,y=1;char c=get原创 2017-11-17 08:17:56 · 244 阅读 · 0 评论 -
bzoj 3391: [Usaco2004 Dec]Tree Cutting网络破坏
→题目链接←【想说的话】果然我还是比较喜欢树【题解】原创 2017-11-15 20:30:02 · 253 阅读 · 0 评论 -
bzoj 3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助 二分
→题目链接← 【想说的话】期中考试gg了...写发水题压压惊 【题解】用两个数组,一个按分数从小到大排序,一个按价格从小到大排序在按分数排序的数组上进行二分,把它当作中位数,然后在另一个数组中扫一遍找到两边的数,判断是否合法复杂度O(nlogn) [2018-10-21]:突然发现没有单调性,所以二分是假的,但是数据太弱了所以过了,还是优先队列吧......原创 2017-11-05 19:47:10 · 286 阅读 · 0 评论 -
bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会
→题目链接←【想说的话】没有什么想说的=.=周末没什么事不刷题感觉不太好【题解】两遍dfs(树形dp)将点1当作根第一遍dfs计算出每个点子节点总数,还有将它作为集会地点时它的子树中的点满足条件需要的代价第二遍计算出答案,点1的答案就是dfs1时处理出的代价,剩下的点的答案就对于它与它父亲节点的那条边计算一下就好具体看代码吧【代码】原创 2017-10-29 22:18:00 · 247 阅读 · 0 评论 -
bzoj 3364: [Usaco2004 Feb]Distance Queries 距离咨询 LCA
→题目链接←【想说的话】TLE了3遍后我深刻的认识到了....跑最短路果然不可行...【题解】显然是裸的LCA【代码】#include#include#include#include using namespace std;struct node{ int to,len; node(int x,int y){to=x,len=原创 2017-10-12 11:22:49 · 285 阅读 · 0 评论 -
bzoj 1230: [Usaco2008 Nov]lites 开关灯
→题目链接←正解是线段树...然而暴力能过为什么要费劲呢=.=代码:#include#include#include#include#includeusing namespace std;bool f[100010];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0原创 2017-10-05 22:21:52 · 255 阅读 · 0 评论 -
bzoj 3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 树的直径
→题目链接←【想说的话】一开始以为还要像前面一题那样搞带权并查集然后我就不会了...后来突然发现我zz了最后一个方向没用了...直接建双向边然后跑树的直径就行了...幸亏这个题保证边不交叉,要不然就彻底不会了【题解】建双向边然后跑树的直径找树的直径:随便从一个点跑bfs,找到距离它最远的那个点,再从那个点跑bfs,最长路就是树的直径原创 2017-10-11 14:29:06 · 537 阅读 · 0 评论 -
bzoj 3479: [Usaco2014 Mar]Watering the Fields 最小生成树
→题目链接←裸的最小生成树...只会prim算法n^2暴力建边然后跑最小生成树学了这么长的时间终于第一次写最小生成树真棒啊代码:#include#include#include#include#includeusing namespace std;struct node{ int s,t; int len; node(int x,i原创 2017-09-02 18:00:34 · 300 阅读 · 0 评论 -
bzoj 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
→题目链接←裸的最大生成树写了两种算法,算是模板吧kruskal:#include#include#include#include#include#define ll long longusing namespace std;struct node{ int s,t,len; friend bool operator < (node a,原创 2017-09-06 15:45:42 · 253 阅读 · 0 评论 -
bzoj 3943: [Usaco2015 Feb]SuperBull
→题目链接←又是一道水题,又是一道翻译及其坑人的题翻译里每个数是1~230...原文是1~2^30太差劲了暴力建边然后跑最大生成树代码:#include#include#include#include#define ll long long using namespace std;struct node{ int s,t,le原创 2017-09-07 20:30:20 · 210 阅读 · 0 评论 -
bzoj 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 带权并查集
→题目链接←【想说的话】一道带权并查集好(水)题以前觉得带权并查集挺屌的...但是写过才发现就是正常的并查集顺便维护点什么东西...好像我写的有点暴力啊...跑的好慢啊【题解】做并查集的过程中找根时不做路径压缩然后对于每个点保存它到它的父亲节点需要在x轴和y轴上移动多少每次合并x、y时找到y的根并记录从y移动到跟需要在x轴和y轴上移动多少然后原创 2017-10-10 21:38:36 · 335 阅读 · 1 评论 -
bzoj 1232: [Usaco2008Nov]安慰奶牛cheer
→题目链接←读题就可以看出肯定用最小生成树只按照边权找到最小生成树后,计算最后的时间是Σ边权*2+Σ点权*出度+我们要选的过夜的点的权值然后发现,如果只按照边权找最小生成树是不正确的因为我们正常跑kruskal的时候每次会将边权*2+两边点的点权加进答案所以我们可以在排序前把每条边两边点的点权都加进这个边权之中,并且把原边权*2这样再跑kruskal就每原创 2017-10-04 23:02:24 · 242 阅读 · 0 评论 -
bzoj 3368: [Usaco2004]Farmer John's View 约翰看山
→题目链接←我觉得这个题主要就是要处理好每个山的边界问题对于横跨0°的要特殊处理我是把它拆成两段,最后一定是每个山的端点都是秒数从小到大的然后以左端点从小到大排序,再乱搞一搞统计答案就好了,具体看代码吧代码:#include#include#include#define inf 180*60*60using namespace std;str原创 2017-09-29 14:16:01 · 321 阅读 · 0 评论 -
bzoj 3393: [Usaco2009 Jan]Laserphones 激光通讯
→题目链接←每个点的dis要保存4个,分别为从四个方向到达这个点需要的镜子数然后正常跑spfa就好了代码:#include#include#include#define inf 233333333using namespace std;struct point{ int x,y; friend bool operator == (point a,原创 2017-09-12 20:44:13 · 388 阅读 · 0 评论 -
bzoj 4397: [Usaco2015 dec]Breed Counting 前缀和/线段树
→题目链接←这个题我傻逼了看到区间查询我下意识地打了线段树然后一发A了后发现其他人的代码都好快啊找题解发现都是用的前缀和靠!然后又搞了一发前缀和我把两个代码都放上来吧前缀和:#include#includeusing namespace std;int n,m;int sum1[100010],sum2[100010],sum原创 2017-08-28 09:18:18 · 407 阅读 · 0 评论 -
bzoj 3401: [Usaco2009 Mar]Look Up 仰望
→题目链接←以高度为第一关键字,从大到小以序号为第二关键字,从小到大排序然后从头开始扫,每次找到后继就是第一个高于他的,然后把他的编号插到set里代码:#include#include#include#includeusing namespace std;struct node{ int x,num; friend bool operato原创 2017-09-13 14:47:14 · 267 阅读 · 0 评论 -
bzoj 1741: [Usaco2005 nov]Asteroids 穿越小行星群 网络流
→题目链接←二分图好像是比网络流好写...然而我并不会所以直接把网络流模板搞过来了行连向列,流量为inf然后所有的行和源点连,流量为1所有的列和汇点连,流量为1然后跑网络流/二分图就行不管空间大小的代码:#include#include#include#include#include#include#include#define原创 2017-08-10 07:32:18 · 258 阅读 · 0 评论 -
bzoj 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
→题目链接←一个水题....找到从起点到终点的路径,然后算出所有的转速,最后加起来因为一个齿轮不可能被两个齿轮驱动,所以从起点到终点一定只有一条路径所以从起点开始,进行深搜就好,整个图像是一个树一样存一下每个点的父亲节点,最后从终点向上一直找就是那条路经注意:1、转速进行运算时一定要用小数,有进位什么的2、输出答案时不能直接printf("%0.lf",ans),这原创 2017-08-14 16:18:19 · 318 阅读 · 0 评论 -
bzoj 1673: [Usaco2005 Dec]Scales 天平
→题目链接←神奇的背包dfs代码:#include#include#include#include#include#include#define inf 999999999#define ll long longusing namespace std;int n,m;ll a[1010];ll sum[1010];ll ans=0;vo原创 2017-08-15 11:02:50 · 310 阅读 · 0 评论 -
bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 floyd
→题目链接←我简直太弱了floyd都不会写了orz神奇的算法代码:#include#include#define inf 9999999using namespace std;int n,m,T;int Min[330][330];int main(){ scanf("%d%d%d",&n,&m,&T); for(int i=1; i<=n; i原创 2017-08-10 14:50:40 · 264 阅读 · 0 评论