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;
		for(int i=2;i<t;i++){
			if(a[i-1]+d>=e){
				if(a[i-1]+d-e<=(t-i)*d) a[i]=a[i-1]+d;
				else a[i]=e+(t-i)*d;
			}
			else if(a[i-1]+d<e){
				if(e-a[i-1]-d<=(t-i)*d) a[i]=a[i-1]+d;
				else a[i]=e-(t-i)+d;
			}
		}
		int ans=0;
		for(int i=1;i<=t;i++) ans+=a[i];
		cout<<ans<<endl;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-15 06:57:03

codeforces 534B Covered Path-思维的相关文章

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>>

Codeforces 534B Covered Path(贪心)

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

[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 789E bfs建模,思维

CodeForces 789E 题意:有k种可乐,每种的测试为ai/1000. 要你合成一种浓度为n/1000的可乐,问最小要杯可乐,每种可乐可重复取. tags:  要注意到浓度绝不会超过1000/1000. 假设选取m杯可乐,则 (a1+a2+......+am) / m = n,变换一下为(a1-n)+(a2-n)+......+(am-n) = 0.即要选 m杯可乐,其浓度减 n之和为0.而浓度不超过1000,故(a1-n)+(a2-n)+....+(as-n)的和肯定在 -1000~1

CodeForces 1102C-简单的思维题

题目链接:http://codeforces.com/problemset/problem/1102/C C. Doors Breaking and Repairing time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are policeman and you are playing a game with Slavik

CodeForces 789D 欧拉路径计数,思维

CodeForces 789D 题意:n个点m条边的无向图,求经过其中m-2条边两次,剩下2条边一次的方案数有几种,如果剩下两条边的集合一样算同一种. tags: 选出两条边,其它m-2条边假想复制成两条,这样就是要求欧拉路径是否存在,即奇点个数是否为0或2. 所以该怎么选这两条边呢? 先把边分为自环边和普通边. 1.选取两条不相邻普通边,图中存在4个奇点,不满足欧拉路径条件: 2.选取两条相邻普通边,图中存在2个奇点,满足欧拉路径条件: 3.选取一条普通边一条自环,图中存在2个奇点,满足欧拉路

CodeForces 762D Maximum path

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

2017-03-16 Codeforces 453A 概率期望,思维 UOJ 228(待补)

Codeforces 453A   A. Little Pony and Expected Maximum 题意:一个m面质地均匀的骰子,每面出现的概率都是独立的1/m, 你需要投掷n次,其结果是这n次出现的最大点数.问投掷n次骰子的结果的期望值是多少,要求相对误差或绝对误差不超过1e-4. tags:枚举骰子出现最大值i,计算出最大值为i时的概率,就得到了答案. 最大值为i的概率=(i/m)^n-((i-1)/m)^n. #include<bits/stdc++.h> using names