[USACO18FEB]Snow Boots S】的更多相关文章

题面:P4269 [USACO18FEB]Snow Boots G 题解: 把所有砖和靴子排序,然后依次处理每一双靴子,把深度小于等于它的砖块都扔线段树里,问题就转化成了求线段树已有的砖块中最大的砖块间距是否小于当前靴子间距. 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define max(a,b) ((a)>(b)?(a):(b)) u…
题目大意 求出最少需要丢去多少双靴子才能到达终点. 解法 解法一: 看到数据的范围,非常清楚\(O(n^3)\)能过掉所有的数据,那么我们就果断暴力. 解法二: 比较容易会想到用DP做,我一开始定义\(f[i][j]\)表示前\(i\)个格子,现在穿了第\(j\)双时的最小丢弃数. 那么决策就是每次枚举前面的第\(k\)个格子,和现在穿了第\(p\)双时的最小丢弃数,计算两者之间的距离,在转移. 但是这样无法判断是否要丢弃出最上面的那一双,这样写感觉非常的麻烦. 所以就换了一种状态:\(f[i]…
提供一种无脑DP做法 题目中大概有这么些东西:位置,穿鞋,跑路 数据小,那么暴力开数组暴力DP吧 设dp[i][j]表示穿着鞋子j,到达位置i是否可行 无脑转移 枚举位置,正在穿哪双鞋,换成哪双走出去,走几步 小的注意事项 1,穿这双鞋不能到这个地方就可以直接跳过,它不能用来转移 2,如果这只鞋不能满足在这个地方死不了,我们就不能穿这双鞋走出去 3,如果走这些步到达的地方,这双鞋不能承受,就不能转移 最后枚举最少穿几双走到n即可 #include<iostream> #include<c…
题目大意:略 网上各种神仙做法,本蒟蒻只想了一个离线+并查集的做法 对所有靴子按最大能踩的深度从大到小排序,再把所有地砖按照积雪深度从大到小排序 一个小贪心思想,我们肯定是在 连续不能踩的地砖之前 的一个位置开始跳,如果这都不能跳过这一段连续的坏地砖,说明这个靴子肯定不能用 那么离线靴子以后,会发现不能踩的瓷砖是逐渐添加上去的,相当于求序列中最长连续坏点的长度 可以用并查集维护,一个点如果不能踩,就去merge它左右也不能踩的地砖,即积雪深度大于等于这块地砖 再用并查集维护一个size表示当前联…
5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 81  Solved: 61[Submit][Status][Discuss] Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪.在Farmer John的农舍的地窖中,总共有B双靴子,编号为1…B.其中某些比另一些结实,某些比另一些轻便.具体地说,第i双靴…
5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 102  Solved: 79[Submit][Status][Discuss] Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1…B.其中某些比另一些结实,某些比另一些轻便.具 体地说,第…
题面: G. Snow Boots Input file: standard input Output file: standard output Time limit: 1 second Memory limit: 256 megabytes   It's winter on the farm, and that means snow! There are N tiles on the path from the farmhouse to the barn, conveniently number…
[原题题面]传送门 [简化题意] 给定一个长度为n的序列. 有m次询问,每次询问给定两个数si,di.你一开始站在0,每次你可以走不超过di,但你到达的位置的数不能超过si.问能否走到n+1. n,m<=100000. [未讲之前]不知道这题哪里跟线段树挂钩了,感觉跟线段树八竿子打不着的关系23333. [题解]先根据s[i]的限制确定出哪些地方是不能走的,然后按s[i]从小到大排序,维护n上不能走的最长连续长度,因为每一次s[i]越来越大,那么限制越来越小. 还有弄清楚只要最长连续不能走的长度…
对于某个靴子,如果0代表某个格能走,1代表不能走,那么只要连续的1的个数的最大值>=靴子的步长,那这个靴子就不能用. 那么只要对靴子和格子都按深度排个序,然后从大到小来扫一遍(靴子越来越浅,能走的格子就越来越少,也就是相当于在增加1的个数),现在只要能维护把0变成1后,连续的1个数的最大值就行了 用并查集就可以了(好像双向链表或者线段树也行?). #include<bits/stdc++.h> #define ll long long #define pa pair<int,int…
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1…B.其中某些比另一些结实,某些比另一些轻便.具 体地说,第i双靴子能够让FJ在至多si英尺深的积雪中行走,能够让FJ每步至多前进di.Farmer John从1号地砖出 发,他必须到达N号地砖才能叫醒奶牛们.1号地砖在农舍的屋檐下,N号地砖在牛棚的屋檐下,所以这两块地砖都 没有积雪.帮助Farmer…