USACO
文章平均质量分 79
满赋诸机
这个作者很懒,什么都没留下…
展开
-
USACO-Section 4.2 Drainage Ditches (最大流[Ford-Fulkerson])
看了前面的算法介绍和网上的算法讲解,明白了网络流的求法,然后按照算法写了一遍用bfs找增广路径,寻找增光路径时找当前路径流量最大的一条,然后进行图的更新,直至无法到达汇点原创 2016-04-17 12:19:05 · 395 阅读 · 0 评论 -
USACO-Section 3.4 Raucous Rockers (DP)
解法一:DP【O(n*t*m)】又是知道应该用DP做,但是不知道如何转移思索好久,想出来一个特别麻烦的转移方程设dp[i][j]表示用到第i张唱片的前j分钟时(第i张唱片没有任何时间浪费)能保存最多的歌曲数,初始dp[1][0]=0(表示有效状态),其余为-1从后开始枚举唱片,其中再从后开始枚举用过的时间,当当前状态有效时进行转移(我为人人型)进行到dp[i][j]时,若能存下这首歌,则在第i张唱片存这首歌,否则第i+1张唱片存这首歌(前提是时长不超过限制)又想了一下,其实dp全部初始化为0即原创 2016-04-12 19:26:02 · 942 阅读 · 0 评论 -
USACO-Section 3.3 Riding the Fences(欧拉回路)
这个算法的大致思路弄懂了:递归到一个点时,对该点所有的临接点递归调用(WA了后才发现根本没弄懂,直接跳过了图片模拟过程)但在写代码时想直接输出结果,就直接在dfs的第一行输出当前点,发现WA在第7组数据(其实早有心理准备,因为如果下一个点是终点,但是还存在其他边,这样就会出错)看了别人的解释:遍历完当前点的所有临接点后在记录当前点,最后逆序输出,这样能纠正类似上面提到的错误,但还不清楚原理...原创 2016-03-26 17:54:31 · 424 阅读 · 0 评论 -
USACO-Section 3.2 Magic Squares(BFS)
强行理解题意,导致样例都过不了,调了一早上...(以后一定好好读题)没注意给的是目标状态,还以为是初始状态更没注意顺序是S形,与我用的顺序方式不一样原创 2016-03-26 10:38:15 · 305 阅读 · 0 评论 -
USACO-Section 3.2 Feed Ratios(枚举)
范围依旧很小,枚举即可原创 2016-03-25 12:29:39 · 492 阅读 · 0 评论 -
USACO-Section 3.2 Spinning Wheels(模拟)
数据范围很小,直接模拟即可用一个cur[i][j]数组表示第i个轮子当前角度j是否有空隙需要注意的是有空隙的角度是闭区间,即[s,s+e]均有空隙原创 2016-03-24 23:07:25 · 333 阅读 · 0 评论 -
USACO-Section 3.2 Stringsobits(DP)
dp[i][j]表示长度为i的二进制数中含有1的个数不超过j的个数则状态转移方程为:dp[i][j]=dp[i-1][j-1]+dp[i-1][j];边界条件是:dp[i][0]=dp[0][i]=1由于dp[0][0]=dp[0][1]=…=dp[0][l]=1,则dp[1][1]=dp[0][0]+dp[0][1]=2,dp[1][2]=…=dp[1][l]=2,从而当j>i时,dp[i][j]=dp[i][i]=dp[i-1][j-1]*2;判断第n位的数字时:若dp[n-1][l]<m,则原创 2016-03-21 12:26:00 · 505 阅读 · 0 评论 -
USACO-Section 3.2 Factorials(模拟)
首先可以去掉所有的因子5,然后去掉相同个数的因子2,最后将剩余的数乘起来,取末位即可后来想到如果后面是0直接去掉即可,对剩下的数继续乘,刚开始是对每次结果模10,结果WA了,后来发现模1000才AC,不过感觉仍然是水过的,数据不够大觉得应该是数字上限是多少位,结果应该取多少位原创 2016-02-24 18:47:01 · 647 阅读 · 0 评论 -
USACO-Section 3.1 Stamps(DP)
这种简单的dp直接能想到做法提交的代码没有判断i<2000003也AC,没有越界,不过感觉这样更严谨原创 2016-02-24 12:43:48 · 473 阅读 · 0 评论 -
USACO-Section 3.3 A Game (区间DP)
看到题后,想到过用DP,但是区间DP已经忘了,普通DP有不能。看到别人定义dp[i][j]为区间[i,j]内先手能获得的最大值,然后就瞬间明白了,DP太深奥了,会者不难sum(i,j)为区间[i,j]内数的和dp[i][j]可由dp[i+1][j]和dp[i][j-1]转移而来dp[i][j]为①取第i个数+sum(i+1,j)-dp[i+1][j];②取第j个数+sum(i,j-1)-dp[i][j-1] 二者中的最大值。原创 2016-03-30 14:13:05 · 870 阅读 · 0 评论 -
USACO-Section 3.3 Home on the Range (树状数组||DP)
解法一:树状数组看见题的第一反应是二维树状数组,通过计算正方形区域中数字的和判断是否符合题意。找出每一点作为正方形的右下角能形成的符合题意的正方形的最大边长,但直接枚举复杂度是O(n^3),所以枚举边长时通过二分的方法,使复杂度降至O(n^2*logn)二分真的好容易写跪...但是ans[i]并非真正的边长为i的正方形的个数,而是某一点能形成的最大边长为i的个数,所以还需要再处理才能是正解解法二:DP看到有DP解法时,才想起以前见过这道题,而且也知道解法,还是忘性太大...原创 2016-03-29 22:13:36 · 461 阅读 · 0 评论 -
USACO-Section 3.1 Contact(枚举)
方法一:枚举用map枚举计数,最后排序输出答案即可方法二:通过trie树枚举由于只含有0和1两种字符,所以可以用数组模拟满二叉树表示trie树时间是用map的1/5原创 2016-01-31 17:22:13 · 608 阅读 · 0 评论 -
USACO-Section 3.1 Humble Numbers(DP)
以前貌似做过类似的一题(hdu-1058),不过只有2,3,5,7四个数字,是这题的简化版第一反应是用优先队列,每次取队首元素乘以每个素数,压入队列,但这样很可能会MLE依旧是官方题解:对于每一个质数p,找到最小的丑数h使得p*h大于dp[i-1],取最小的h*p,即为dp[i],为了减少计算,可以用indx[j]表示质数j已经计算到哪一个丑数原创 2016-01-31 14:51:47 · 438 阅读 · 0 评论 -
USACO-Section 3.3 Shopping Offers (DP)
很开心能够一眼看出来是五维DP,但是实现起来的确有点麻烦首先是不确定是否会有要购买的物品之外的其他物品,其次是编号如何对应看了别人的代码后确定套餐内的物品均在购物清单内,可以用下标代表物品数量的物品的编号,可以避免dp时搜索以使下标对应商品编号觉得初始化和dp过程应该分开,即使初始化放在dp过程中会减少代码量/*原创 2016-03-28 13:45:18 · 437 阅读 · 0 评论 -
USACO-Section 4.1 Beef McNuggets (DP)
无解的情况很好判断:①若最小数为1,则所有数都可以取到,即所以方案数都能满足 ②若所有数的最大公约数不为1,则所有的方案数都是其公约数的整数倍,即不存在最大不能购买的上限是不是我数学太渣了,题解的证明看了好久还是没弄明白上界是怎证明的,感觉不相关啊原创 2016-04-14 12:54:38 · 502 阅读 · 0 评论 -
USACO-Section 3.4 Electric Fence (模拟)
第一反应就是按照解析几何的方法做,不过有很多特殊情况,比如会是垂直(n=0或p=0),(p<n或p>n)WA了几次才全部想到原创 2016-04-11 13:03:35 · 892 阅读 · 0 评论 -
USACO-Section 4.3 Letter Game (枚举)
很容易就能想到枚举,而且数据量很小,复杂度够了主要是各种字符串匹配比较麻烦,幸亏有STL库,要不然估计很难写出来原创 2016-04-21 17:53:42 · 555 阅读 · 0 评论 -
USACO-Section 4.3 Street Race (枚举&&BFS)
第一问很好求,直接枚举然后判断是否能到达终点第二问刚开始没理解题意,以为是当前点不在环上,最终明白应该是其作为起点时,不能到以其为终点的那一部分又看了下题解,终于AC了。。。原创 2016-04-21 16:08:20 · 398 阅读 · 0 评论 -
USACO-Section 4.3 Buy Low, Buy Lower (DP[LIS])
原来这题考的是大数加法,还以为只是一个最长下降子序列(需要不同的统计方案数)寻找前面的最长上升子序列时,倒着枚举,则若这个序列的末尾数字出现多次,那么最后一个一定是方案数最多的,那么之前以该数字出现形成的方案数可以不计感觉手敲一个正数的加法还是可以的原创 2016-04-21 14:07:03 · 337 阅读 · 0 评论 -
USACO-Section 4.2 Job Processing (贪心)
完成A操作的时间总和最小值很容易想到但是完成B操作的时间总和最小值还不是能理解,觉得A操作完成的时间对B操作的时间影响很大原创 2016-04-21 09:51:00 · 379 阅读 · 0 评论 -
USACO-Section 4.4 Shuttle Puzzle (BFS)
感觉这这种题和 魔板 与 八数码 差不多,轻易就能想到bfs又是太依赖map了,感觉不用map就TLE了(只是按照要求写了互换的操作,并且指定B只能左移,W只能右移,但是还存在大量的无效状态,例如:空的一边有两个相同的W或B时,且在其外侧还有另一种字符(B或W),则无法达到最终状态)原创 2016-04-21 21:45:26 · 9136 阅读 · 0 评论 -
USACO-Section 2.4 Bessie Come Home(最短路[Dijkstra])
从Z点开始,开始更新各点到Z点的最短距离,第一个距离Z点最短并且未用的点如果存在奶牛,则其即为答案原创 2016-01-30 15:45:52 · 628 阅读 · 0 评论 -
USACO-Section 3.3 Camelot (最短路&&枚举)
最开始没注意到有国王,就想到直接先用BFS处理出任意两点间的“最短路”,然后枚举终点即可,复杂度是O(n*m)后来发现有国王,还是往枚举的方向想,可以枚举搭载国王的骑士,再枚举搭载国王的点,复杂度O((n*m)^3),估计很容易就超时,加了点剪枝,最慢的点0.85s,应该是服务器好,险过官方是对每一点处理出两个值:①骑士到该点最短路,②骑士搭载王到该点的最短路,这样最慢的点0.4s也有大神用dp过,不过看不懂...原创 2016-03-29 12:56:40 · 674 阅读 · 0 评论 -
USACO-Section 3.2 Sweet Butter(最短路[Dijkstra])
由于点是800个,所以只能用优化过的Dijkstra算法复习时又看到 Johnson算法 可以解决 稀疏图的 全源最短路,但是比较麻烦,需要重新构图原创 2016-03-26 16:03:02 · 471 阅读 · 0 评论 -
USACO-Section 2.4 Cow Tours(最短路[Floyd])
题意开始有点没看到,就看看别人的理解,结果解法一直在大脑挥之不去由于只用添加(i,j)一条路,所以这两个牧场连成的片区的直径如果大于i和j所在牧场的直径,则其直径为dis[i]+dis[j]+distance(i,j)【其中dis[i]表示在其所在牧场中,与i最远的距离,distance(i,j)表示i,j两点距离,即添加的路的距离】;否则其直径为i和j所在牧场的直径的较大值原创 2016-01-30 13:29:51 · 475 阅读 · 0 评论 -
USACO-Section 4.2 The Perfect Stall (二分图最大匹配[匈牙利算法[DFS]||网络流[Ford-Fulkerson]])
解法一:匈牙利算法[DFS] O(nm)匈牙利算法专门用于部图的匹配,所以速度极快,全部test都是0.00s大致思路:枚举n头奶牛为起点,若找到一条增广路径(终点为未匹配,且奇数边均不在原匹配中,偶数边均在原匹配中),则答案+1DFS实现找增广路径:dfs参数是i表示奶牛,枚举奶牛喜欢的牛棚,若牛棚不在当前增广路径中,则将其“纳入”增广路径(不一定出现在增广路径中,失败时不必再除去,因为当前状况下就失败,后面的状况不会更好,算作剪枝),若枚举的牛棚未被占据 或 以占据该牛棚的牛为起点时存在一条增广原创 2016-04-17 14:03:50 · 977 阅读 · 0 评论 -
USACO-Section 4.1 Fence Loops (无向图最小环[Dijkstra||Floyd])
解法一:O(n^3*logn)明白题意后想了一个解法:以每一个顶点做起点,每次去掉与其相连的一条边,然后求该点到这条边另一点的最短路,再加上这条边的权值就可得这个环的权值,每次取最小即可,复杂度为:O(n^4)看了题解后发现,本题是求无向图的最小环,解法为:枚举每一条边,去掉该边,然后求该边两点的最短路,再加上这条边的权值就可得到这个环的权值,复杂度为:O(n^3)写代码的时候才发现本题的难点不是求最小环,而是如何将边的信息转化为点的信息,我用了map以判断某一边的点的下标解法二:Floyd -原创 2016-04-15 00:07:28 · 2198 阅读 · 0 评论 -
USACO-Section 3.4 American Heritage (分治)
很简单的题,取先序的第一个节点为根,可以将先序序列和中序序列分为2部分(或1部分),递归调用,知道当前区间只有一个节点直接实现了建树的代码,可以直接在返回值部分输出当前节点的值原创 2016-04-10 21:31:31 · 479 阅读 · 0 评论 -
USACO-Section 3.1 Score Inflation(DP)
由于每个题目有无限多个,所以这题是一个完全背包原创 2016-01-31 13:00:38 · 806 阅读 · 0 评论 -
USACO-Section 3.1 Agri-Net(最小生成树[Prim])
去年学习的时候,POJ已经做过了,裸的最小生成树原创 2016-01-31 11:40:55 · 551 阅读 · 0 评论 -
USACO-Section 2.1 Sorting a Three-Valued Sequence (贪心)
1.3第一个TEXT说过是贪心解法,幸亏还记得住。官方题解:Algorithm The sequence has three parts: the part which will be 1 when in sorted order, 2 when in sorted order, and 3 when in sorted order. The greedy algorithm swaps as many as possible of the 1's in the 2 part with 2's in t原创 2015-08-30 19:51:53 · 609 阅读 · 0 评论 -
USACO-Section 2.1 Ordered Fractions(排序)
数据很小,直接将所有数存入数组,然后排序即可。注意:只有最简分数才放入数组,因为如果它不是最简分数,则它化简后一定能在数组中找到原创 2015-08-30 17:48:40 · 760 阅读 · 2 评论 -
USACO-Section 1.5 Prime Palindromes(Miller-Rabin)
由于USACO挂了,只得在NOCOW看题,没想到HINT原本是隐藏的,直接看了HINT后逃离不了这种思路。。。由于回文数比质数还少,所以先构造回文数,再判断其是否为素数题目比较简单,所以学习一下Miller-Rabin素数检测算法原创 2015-08-27 21:31:57 · 535 阅读 · 0 评论 -
USACO-Section 1.5 Superprime Rib(Miller-Rabin)
从最高位开始判断,由于一位数只有2,3,5,7是素数,所以枚举最高位,然后接下来每一位都必须是奇数,所以枚举1,3,5,7;递归停止条件是:当前数不是素数 或 当前数是素数且是n位书原创 2015-08-28 16:51:51 · 488 阅读 · 0 评论 -
USACO-Section 1.3 Ski Course Design(枚举)
思路:数据很小,直接枚举山的最高高度即可,对于山的最高高度i,若i-h[j]>17,则将h[j]的高度调整为i-17;若h[j]>i,则将h[j]的高度调整为i;求出所有最高高度的方案调整费用的最小值。原创 2015-08-26 23:55:33 · 612 阅读 · 0 评论 -
USACO-Section 1.5 Number Triangles(DP)
DP入门题。状态转移方程:ans[j]=max(ans[j],ans[j+1])+num[i][j];原创 2015-08-27 16:44:42 · 345 阅读 · 0 评论 -
USACO-Section 1.4 Arithmetic Progressions(枚举)
数据很小,时间有5s,直接枚举即可。最后一组数据比官方标程慢了0.5s,本来有更好的优化,但是更浪费空间,就懒得改了。。。原创 2015-08-27 14:20:58 · 711 阅读 · 0 评论 -
USACO-Section 1.4 Mother's Milk(BFS)
今天USACO总挂,好烦人。。。很简单的搜索题,深搜、宽搜都可以,感觉宽搜更容易写就用的宽搜,每次将未出现的状态压入队列中,出队列时判断是否合法,直至队列为空原创 2015-08-27 15:28:08 · 568 阅读 · 0 评论 -
USACO-Section 1.3 Barn Repair(贪心)
做法在Section 1.3第一个TEXT已经说明,就是简单的贪心,每次将空隙最小的两个牛棚连起来用一块木板即可,最后只要用的木板数<=m即可。注意输入的数据不是按顺序的,需要排序原创 2015-08-26 15:31:45 · 615 阅读 · 0 评论 -
USACO-Section 1.3 Combination Lock(枚举)
每个密码数字误差在2以内的数字最多有5个,2个密码则最多有250种结果,所以每次先找出这符合要求的数字,然后枚举即可原创 2015-08-26 15:51:16 · 804 阅读 · 3 评论