AK 9.12 百度Java后端研发B卷 笔试

T1(博弈论)

cpp 复制代码
#include <bits/stdc++.h>

#define endl '\n'

using namespace std;

typedef long long LL;

const int N = 1e5 + 10;

int n, m, t;

void solve() {
	cin >> n >> m; t = n + m - 2;
	if(t & 1) cout << "Yes" << endl;
	else cout << "No" << endl;
}

int main() {
	cin.tie(0); cout.tie(0);
	std::ios::sync_with_stdio(false);

	int T = 1;
	cin >> T;
	while(T --) {
		solve();
	}

	return 0;
}

T2(思维,模拟,哈希表,位运算)

cpp 复制代码
#include <bits/stdc++.h>

#define endl '\n'

using namespace std;

typedef long long LL;

const int N = 1e5 + 10;

int n, m;
int a[N];

int xor_in = 0, XOR_M;
unordered_map<int, int> mp;
unordered_map<int, int> in, out;

bool check() {
	if(in.size() == m && xor_in == XOR_M) {
		cout << "YES" << endl;
		cout << 0 << endl;
		return true;
	}

	if(in.size() == m - 1 && out.size() == 1) {
		int target = XOR_M ^ xor_in;
		int idx = mp[target];
		if(idx != 0) {
			cout << "YES" << endl;
			cout << 1 << endl;
			cout << (out.begin())->second << ' ' << idx << endl;
			return true;
		}
	}

	return false;
}

void solve() {
	cin >> n >> m;
	for(int i = 1; i <= n; i ++) cin >> a[i];
	for(int i = 1; i <= m; i ++) XOR_M ^= i;

	for(int i = 1; i <= m; i ++) {
		if(a[i] > m) out[a[i]] = i;
		else in[a[i]] = i, xor_in ^= a[i];
	}

	for(int i = m + 1; i <= n; i ++) mp[a[i]] = i;

	if(check()) return ;

	for(int i = 1, j = m + 1; j <= n; i ++, j ++) {
		if(a[i] >= 1 && a[i] <= m) {
			in.erase(a[i]);
			xor_in ^= a[i];
		} else out.erase(a[i]);

		if(a[j] >= 1 && a[j] <= m) in[a[j]] = j, xor_in ^= a[j];
		else out[a[j]] = j;

		mp.erase(a[j]);
		mp[a[i]] = i;

		if(check()) return ;
	}

	cout << "NO" << endl;
}

int main() {
	cin.tie(0); cout.tie(0);
	std::ios::sync_with_stdio(false);

	int T = 1;
//	cin >> T;
	while(T --) {
		solve();
	}

	return 0;
}

T3(模拟,哈希表)

cpp 复制代码
#include <bits/stdc++.h>

#define endl '\n'

using namespace std;

typedef long long LL;

const int N = 1e5 + 10;

unordered_map<string, unordered_map<string, unordered_set<string>>> fun; // name : args : type

string get_type(string op) {
	string ret;
	for(char c : op) {
		if(c == ' ') break;
		ret += c;
	}
	return ret;
}

string get_name(string op) {
	string ret;
	int idx = op.find('('); idx -- ;
	for(; idx >= 0; idx --) {
		if(op[idx] == ' ') break;
		ret += op[idx];
	}

	reverse(ret.begin(), ret.end());

	return ret;
}

string get_args(string op) {
	int a = op.find('('), b = op.find(')');
	op = op.substr(a + 1, b - a - 1); op += ',';

	vector<string> ss; string t;

	for(char c : op) {
		if(c == ',') ss.push_back(t), t = "";
		else t += c;
	}

	string ret;
	for(string s : ss) {
		if(s.find(' ') != -1) ret += s.substr(0, s.find(' ')) + ",";
		else ret += s + ",";
	}

	return ret;
}

void solve() {
	int T, code;
	cin >> T;

	string op;
	while(T --) {
		cin >> code;
		getline(cin, op);
		getline(cin, op);
		if(code == 1) {
			string type = get_type(op);
			string name = get_name(op);
			string args = get_args(op);
			if(fun.count(name) == 0) {
				fun[name][args].insert(type);
				cout << "ok." << endl;
			} else {
				if(fun[name].count(args) == 0) {
					fun[name][args].insert(type);
					cout << "ok." << endl;
				} else {
					cout << "method " << name << " is already defined." << endl;
				}
			}
		} else if(code == 2) {
			string type = get_type(op);
			string name = get_name(op);
			string args = get_args(op);

			if(fun.count(name) != 0 && fun[name].count(args) != 0) cout << "ok." << endl;
			else if(fun.count(name) == 0) cout << "cannot find symbol " << name << "." << endl;
			else if(fun.count(name) != 0 && fun[name].count(args) == 0) {
				cout << "method " << name << " cannot be applied to given types." << endl;
			}
		}
	}

}

int main() {
	cin.tie(0); cout.tie(0);
	std::ios::sync_with_stdio(false);

	solve();

	return 0;
}
相关推荐
激流丶7 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue11 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
我是谁??24 分钟前
C/C++使用AddressSanitizer检测内存错误
c语言·c++
小码农<^_^>26 分钟前
优选算法精品课--滑动窗口算法(一)
算法
让学习成为一种生活方式28 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
羊小猪~~28 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
晨曦_子画33 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
软工菜鸡1 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
发霉的闲鱼1 小时前
MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击
c++·mfc