CodeForces 937CSave Energy! 水题

Posted nervendnig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 937CSave Energy! 水题相关的知识,希望对你有一定的参考价值。

题意:

  一个炉子烤鸡,炉子打开的时候一共$T$分钟可以烤完,关闭的时候一共$2T$分钟可以烤完,炉子每$K$分钟自动关闭,厨师每$D$分钟回来检查,打开炉子

  问多长时间烤完..

题解:

   用整数写比较稳妥..

   显然,整个过程是呈周期性的.

   $K>D , t_r = D*(left lfloorfrac{K}{D} ight floor +1)  $ 

   $K<=D,  t_r =D$

   将总时间$T*2$,那每个周期提供的完成度 $C=K+D$

   答案就可以出来了..

   输出的时候除以二 判断一下余数即可;

#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int casn,n,m,k;
int main(){
	ull k,d,t;
	cin>>k>>d>>t;
	t*=2;
	ull ans;
	ull ck=0;
	if(k>=d&&k%d==0){
		ans=t;
	}else if(k>d){
		ull rnd=d*(k/d+1);
		ull ck=rnd+k;
		ans=2*rnd*(t/ck);
		ull ckt=ck*(t/ck);
		if(t%ck){
			if(t%ck<=k*2) ans+=(t-ckt);
			else ans+=2*(k+(t-ckt-k*2));
		}
	}else {
		ull ck=d+k;
		ans=2*d*(t/ck);
		ull ckt=ck*(t/ck);
		if(t%ck){
			if(t%ck<=k*2) ans+=(t-ckt);
			else ans+=2*(k+(t-ckt-k*2));
		}
	}
	cout<<ans/2;
	if(ans%2) cout<<".5
";
	else cout<<".0
";
  return 0;
}

以上是关于CodeForces 937CSave Energy! 水题的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces - 937D Sleepy Game

CodeForces937B:Vile Grasshoppers(素数性质)

CodeForces 937D Sleepy Game

Codeforces 937D dfs

Codeforces 937 D. Sleepy Game(DFS 判断环)

CodeForces-937D-Sleepy Game