有没有dalao帮忙看看这份题解啊
  • 板块灌水区
  • 楼主rnf5114
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/5/16 17:08
  • 上次更新2023/10/23 15:36:05
查看原帖
有没有dalao帮忙看看这份题解啊
917683
rnf5114楼主2023/5/16 17:08

题目概括

已知有 nn 个问题,问题所需时间和分数随编号的增加呈上涨,第 ii 题在第 xx 分钟提交,所得分为 max⁡(0,pi×x)\max(0,p_i \times x) 分 分;Limak 从简到易做,即正着做,Radewoosh 从难到易做,即倒着做,求两人的得分谁更高,如果相同输出 Tie 。

题目思路

  • 定义 t1t1,t2t2 分别记录 Limak 所用时间和 Radewoosh 所用时间。

  • 定义 lsls,rsrs 分别记录 Limak 总成绩和 Radewoosh 总成绩。

  • for 循环 1~nn,Limak 因为是正着做,所以 Limak 的成绩和所用时间与 ii 有关,Radewoosh 因为是倒过来做,所以成绩和所用时间与 n−i+1n-i+1 有关。

  • 最后比较大小,分数一样输出 Tie 否则输出胜利者名字。

温馨提示

  • 此题解时间复杂度为 O(n)O(n),nn 的数据范围为 1≤n≤501≤n≤50,所以无需担心 TLE。

  • 此题不用担心暴 int。

代码+注释(禁止抄袭)

#include <iostream>
using namespace std;
int n,c,p[51],t[51],Ls,Rs,t1,t2;
int main(){
	cin>>n>>c;
	for(int i=1;i<=n;i++){
		cin>>p[i];
	}
	for(int i=1;i<=n;i++){
		cin>>t[i];
	}
	for(int i=1;i<=n;i++){
		t1+=t[i];//Limak做法
		ls+=max(0,p[i]-c*t1);
		t2+=t[n-i+1];//Radewoosh做法
		rs+=max(0,p[n-i+1]-c*t2);
	}
	if(ls>rs){
		cout<<"Limak";
	}
	else if(ls==rs){
		cout<<"Tie";
	}
	else{
		cout<<"Radewoosh";
	}
	return 0;
}
2023/5/16 17:08
加载中...