DIDIDI~

95 篇文章 0 订阅

1 最佳速通时间

小C准备参加某个游戏的速通比赛,为此他对该游戏速通了 n次,每次速通记录可以用一个数组 A={a1,a2……am}表示,其中a表示小C 从游戏开始到第i个游戏节点所花赛的时间,m 为游戏节点的个数。请根据小 C 的速通记录计算出他的理论最佳速通时间,理论最佳速通时问指:小C在每两个相邻的游戏节点之间所花费的时间均达到了历史最佳记录,在此情况下所花费的总时间。
输入描述
第一行两个正整数 n,m,表示有 n个速通记录,每个速通记录有 m 个游戏节点接下来n行,每行 m 个正整数,第i行的第j个数 aij表示在第i次速通记录中,从游戏开始到第j个游戏节点所花费的时间。
对于第i行数据 ai1,ai2,…, aim,满足0 < ai1 < ai2<… < aim
数据保证:1≤n≤300,1≤m≤300,1≤aij≤100 000 00
输出描述
一行一个整数,表示理论的最佳速通时间。
样例输入
3 5
1 4 7 9 13
2 3 8 11 14
1 3 7 12 13
样例输出
8

思路与代码:
初始化一个长度为 m 的数组 a,用于存储每个游戏节点之间的最小时间差。初始值设为无穷大。初始化变量 s 用于累加理论最佳速通时间。
遍历每次速通记录:对于每次速通记录,遍历每个游戏节点。计算当前游戏节点与前一个游戏节点之间的时间差,并与 a 数组中对应位置的值进行比较,取最小值。如果当前是最后一次速通记录,则将 a 数组中的值累加到 s 中。

void theBestTime() {
	int m = 0, n = 0;
	cin >> m;
	cin >> n;
	vector<vector<long long>> records;
	for (int i = 0; i < m; i++){
		vector<long long> record;
		for (int j = 0; j < n; j++){
			int tem = 0;
			cin >> tem;
			record.push_back(tem);
		}
		records.push_back(record);
	}
	vector<long long> minTimes(n,1e9);
	long long sumNum = 0;
	for (int i = 0; i < m; i++) {
		long long pre = 0;
		for (int j = 0; j < n; j++) {
			minTimes[j] = min(records[i][j]-pre,minTimes[j]);
			pre = records[i][j];
			if (i==m-1) sumNum += minTimes[j];
		}
	}
	cout << sumNum << endl;
}

2 对比之美


在这里插入图片描述
思路与代码:
思维题,显然题目把三种情况都告诉了,只有一个格子,直接输出0,两个格子,直接输出m。
大于两个格子的时候,直接输出2 * m,即 0 m 0 0 0 0 0

void compareBeauty() {
	int T = 0;
	cin >> T;
	vector<vector<long long>> gridColleVec(T,vector<long long>(2));
	for (int i = 0; i < T; i++){
		cin >> gridColleVec[i][0];
		cin >> gridColleVec[i][1];
		int beauty = 0;
		if (gridColleVec[i][0] == 1) {
			beauty = 0;
		}
		else if (gridColleVec[i][0] == 2){
			beauty = gridColleVec[i][1];
		}
		else if (gridColleVec[i][0] > 2) {
			beauty = gridColleVec[i][1]*2;
		}
		
		cout << beauty<<" ";
	}
	cout << endl;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

colorful_stars

您是我见过全宇宙最可爱的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值