P1353 [USACO08JAN]跑步Running 显然的dp 设$f[i][j]$表示进行到第$i$分钟时,$j$疲劳度下的最远距离,$d[i]$为第$i$分钟下能跑的距离 分类讨论 1.运动:显然$f[i][j]=max(f[i][j],f[i-1][j-1]+d[i])$ 2.休息:我们枚举第$u(u<i)$分钟,休息到第$i$分钟时刚好疲劳度下降到$0$ 显然$f[i][0]=max(f[i][0],f[i-u][u])$ 注意疲劳度为$0$时仍可以继续休息,那么$f[i][0]=m…
动态规划 状态 dp[i][j]表示第i分钟疲劳值为j的最大值 初始 全部都为一个最小值"0" 转移 考虑休息和走 如果当前疲劳值比时间要大,显然不可能出现这种情况 如果比时间小 dp[i][0]=max(dp[i][0],dp[i-j][j]); 还有走的情况 dp[i][0]=max(dp[i-1][j-1]+d[i],dp[i][j]); 答案 根据设计的状态不难得出最终的答案为dp[n][0] 完整代码: #include<bits/stdc++.h> using…
题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute. The ultimate distance Bessie runs, though, depe…
题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute. The ultimate distance Bessie runs, though, depe…
必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 LibreOJ #141034 #2359. 「NOIP2016」天天爱跑步 Accepted 100 2454 ms 72492 KiB C++ / 6.3 K hkxadpall 2018-07-28 16:12:23 Vijos 5b5c3486d3d8a169f1b83bb0  P2004 天天爱跑步…
这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include<cstdio> #include<cstring> #include<iomanip> #include<algorithm> using namespace std; ][];//霸气的开始潇洒自信 ; ,m=-; void ac(int x,int y) {…
题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=3064 分析 其实我是在看吉司机线段树课件时看到这题很感兴趣就跑过来做 显然如果数据小一点可以用分块什么的比较好搞 但是这个数据范围可能用\(log N\)的数据结构更舒服一点 怎么搞呢?请阅读国家集训队2016论文集之<区间最值操作与历史最值问题--杭州学军中学 吉如一>,对,就是我们敬爱可亲的吉…
题目 一道入门的dp,首先要先看懂题目要求. 容易得出状态\(dp[i][j]\)定义为i时间疲劳度为j所得到的最大距离 有两个坑点,首先疲劳到0仍然可以继续疲劳. 有第一个方程: \(dp[i][0]=max(dp[i-1][0],d[i][0])\) 而如果要休息则一定要休息到疲劳值为0才可以停止. 有第二个方程: \(dp[i][0]=max(dp[i][0], dp[i-j][j])\)意思是i位置疲劳度为0时的最大距离,是i-j位置疲劳值为j时休息j天的最大距离. 而根据题目意思所得到…
题面 题解 很显然,答案满足单调性. 因此,可以使用二分答案求解. 考虑\(check\)的实现. 贪心地想,免费的\(k\)对电话线一定都要用上. 每次\(check\)时将小于\(mid\)的边权设为\(0\),其它的设为\(1\). 跑一边最短路判断\(\mathrm{dist[n]}\)是否\(\leq k\)即可. 代码 #include <bits/stdc++.h> #define itn int #define gI gi using namespace std; inline…
USACO!!! 唉!无一例外又是母牛(终于知道美国的牧场养什么了) 今天的主人公是一个叫贝茜的公主病母牛(好洋气) 可是她叫什么和我们理解题好像没有什么关系 通过读题我们可以发现她有三个傲娇的地方 1.她要继续走 2.她要中途休息,但是要休息到完全恢复体力,即疲劳度为0 3.她要发奋图强一直走下去,直到体力耗尽 那么我们针对这三种情况就可以发现有三个状态转移方程式 1.她要继续走那么疲劳度+1,再加上这一秒所走的距离 f[i-1][j-1]+a[i] 2.她要中途休息,那么疲劳度休息到0,距离…