笔试刷题day1

这里写自定义目录标题

组队竞赛题目

题目描述
在这里插入图片描述
链接:https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue=1&page=1&onlyReference=false

贪心算法
这道题目其实还是挺简单的,关键就是要注意题目描述中的队伍水平值等于队伍队员中第二高水平值。
为了让每个队伍的水平值总和最大,就需要每个队伍的第二水平值是尽可能大的值,又因为第二水平值不是最大值,所以我们用贪心算法取局部第二大的值。

例如例题中的5 2 8 5 1 5
经过排序之后是 1 2 5 5 5 8
我们可以取最大值8下面的第二大值5作为第一个队伍的水平值,去掉这两个值后的水平值数组为1 2 5 5
再取最大值5 下面的第二大值5作为第二个队伍的水平值。每个队伍的最小值无关紧要。这样就能得到最大的队伍水平值总和。

下面是示例代码:

#include <iostream>
#inlcude <algorithm>
#include <vector>

using namespace std;

int main(){

	int n;
	//IO型OJ可能有多组输入
	while (cin >> n){

		long long sum = 0;
		vector<int> a;
		a.resize(3 * n);
		//输入水平值
		for (int i = 0; i < 3 * n; ++ i) { cin >> a[i]; }
		//排序
		a.sort(a.begin(), a.end());	

		//取局部第二高水平值
		for (int i = 0; i < n; ++i){ sum += a[a.szie() - 2 * (i + 1)]; }

		cout << sum << endl;
	}

	return 0;
}

删除公共字符串

在这里插入图片描述
链接:https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=85&&tqId=29868&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

提示:哈希映射
可以先创建一个长度为所有字符数目的数组,数组每一个元素置为0,把第二个字符串每一个字符所对应的位置置为1,遍历第一个字符串,如果对应的位置不为0,就保留,为0,就删除。

示例代码:

#include <iostream>
#include <string>

using namespace std;

int main(){

	string str1, str2;

	//用getline接受带有空格的字符串
	getline(cin, str1);
	getline(cin, str2);

	//用哈希映射统计str2中字符出现的次数
	int hashtable[256] = 0;
	for (int i = 0; i < str2.size(); ++i) { hashtable[str2[i]]++; }
	
	//定义新字符串
	string ret = "";

	for (int i = 0; i < str1.size(); ++i){
		
		if (hashtable[str1[i]] == 0) { ret += str1[i]; }

	}
	
	cout << ret << endl;

	return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值