Codeforces 534B - Covered Path

534B - Covered Path

思路:贪心,每一秒取尽可能大速度。

画张图吧,不解释了:

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int dp[105],dp1[105];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int v1,v2,t,d;
    cin>>v1>>v2>>t>>d;

    dp[1]=v1;
    for(int i=2;i<=t;i++)dp[i]=dp[i-1]+d;
    dp1[t]=v2;
    for(int i=t-1;i>=1;i--)dp1[i]=dp1[i+1]+d;

    int ans=0;
    for(int i=1;i<=t;i++)ans+=min(dp[i],dp1[i]);
    cout<<ans<<endl;
    return 0;
}
时间: 2024-10-11 16:48:05

Codeforces 534B - Covered Path的相关文章

Codeforces 534B Covered Path(贪心)

题意  你在路上走 每秒钟的开始都可以改变自己的速度(改变速度都是瞬间完成的)  知道你开始的速度v1 结束时的速度v2  整个过程所用时间t  以及每秒最多改变的速度d  求这段时间内你最多走了多远 最优的肯定是先把速度从v1升到最大  然后从最大减到v2  使得用的时间不会超多t   因为肯定是足够从v1减为或升到v2的   那么我们只用从两端往中间靠  哪边的速度小  哪边就加上d  知道两边相邻  这样就能保证每次改变的速度都最大  而且最后两端的速度差也不会大于d  也就是最优答案了

codeforces 534B Covered Path-思维

题意:有一段路,已知起点和终点的速度.总时间和每秒之间速度差值的上限,求这段路最长能是多少 分析:思维 代码: #include<iostream> #include<cstring> using namespace std; int main() { int s,e,t,d; int a[200]; while(cin>>s>>e){ cin>>t>>d; memset(a,0,sizeof(a)); a[1]=s,a[t]=e;

[VJ][暴力枚举]Covered Path

Covered Path Description The on-board computer on Polycarp's car measured that the car speed at the beginning of some section of the path equals v1 meters per second, and in the end it is v2meters per second. We know that this section of the route to

Codeforces Round #298 (Div. 2) B. Covered Path

题目大意: 一辆车,每秒内的速度恒定...第I秒到第I+1秒的速度变化不超过D.初始速度为V1,末速度为V2,经过时间t,问最远能走多远. 分析 开始的时候想麻烦了.讨论了各种情况.后来发现每个时刻的最大值都满足一定的约束关系.设此时为时刻i,上一次的速度为p,那么本次的速度应为max(p+d,v2+(t-i)*d),因为要保证最终一定能够返回到v2.这样以来便可以得到每个时刻的最大值,然后累加求和即可. 1 #include<cstdio> 2 #include<iostream>

CodeForces 762D Maximum path

http://codeforces.com/problemset/problem/762/D 因为是3*n很巧妙的地方是 往左走两步或更多的走法都可以用往回走以一步 并走完一列来替换 那么走的方法就大大减少 左边一列转移到右边一列 每个 格子的转移方法枚举出来 用动态规划即可解决 最主要的是因为他能够往回走.但是我们画图可以发现:每次往回走一定不用超过1次.也就是说,最多只能走成这样 而不会走成这样 因为下图的走法一定可以用上图组合,并且由于只用3行的特性,每次向回走实际上是取走了所有的数.所以

Codeforces534B:Covered Path

The on-board computer on Polycarp's car measured that the car speed at the beginning of some section of the path equals v1 meters per second, and in the end it is v2 meters per second. We know that this section of the route took exactly t seconds to

Codeforces 1000C Covered Points Count

C. Covered Points Count题目大意:有n条线段,问有多少个点被i条线段覆盖(i=1~n).很常见的线段覆盖套路题QAQ.坐标排序后把左端点当做+1,右端点当做-1,扫一遍统计答案即可.但是记得开ll,数组大小开双倍. 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cmath> 5 #include <queue> 6 #

codeforces 1072D Minimum path bfs+剪枝 好题

题目传送门 题目大意: 给出一幅n*n的字符,从1,1位置走到n,n,会得到一个字符串,你有k次机会改变某一个字符(变成a),求字典序最小的路径. 题解: (先吐槽一句,cf 标签是dfs题????) 这道题又学到了,首先会发现,从原点出发,走x步,所有的情况都是在一条斜线上的,而再走一步就是下一条斜线.所以用两个队列进行bfs(把当前步和下一步要处理的字符分开). 到了这里思路就明朗了,每次走的时候如果本身的map里是a就直接走,不是a就看k是否大于0,再看这个字符是不是比答案串里对应位置的字

CodeForces 407B Long Path (DP)

题目链接 题意:一共n+1个房间,一个人从1走到n+1,如果第奇数次走到房间i,会退回到房间Pi,如果偶数次走到房间i,则走到房间i+1,问走到n+1需要多少步,结果对1e9+7取模. 题解:设dp[i]表示从1走到i需要多少步,那么走到房间i+1需要dp[i+1]=dp[i]+1+x+1,这里面第一个1表示走完这步退回到Pi,这个x表示退回到房间Pi再走回来的步数,第二个1表示走完这步到达i+1.我们发现:1.当走到房间Pi的时候,Pi+1到i都是没有走过的即为0次:2.当走到房间i的时候,P