社区讨论

74分求调(必关)

P3864[USACO1.2] 命名那个数字 Name That Number参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mks361uv
此快照首次捕获于
2026/01/24 17:07
4 周前
此快照最后确认于
2026/01/24 19:18
4 周前
查看原帖
CPP
#include<iostream>
#include<unordered_map>
#include<algorithm>
#include<set>
#define M 50009
#define long long
using namespace std;
std::string ji[M];
std::unordered_map<char, int>ni;
std::set<std::string>anss;
int key[M];
int a, b;
int c = 0, d = 0;
std::string s;
int pd(std::string ss) {
	int sz = (int)ss.size();
	if (sz != c) {
		return 0;
	}
	for (int i = 0; i < sz; ++i) {
		if (ni[ss[i]] != key[i+1]) {
			return 0;
		}
	}
	return 1;
}
signed main() {
	std::ios::sync_with_stdio(0);
	std::cin.tie(0);
	std::cout.tie(0);
	ni['A'] = ni['B'] = ni['C'] = 2;
	ni['D'] = ni['E'] = ni['F'] = 3;
	ni['G'] = ni['H'] = ni['I'] = 4;
	ni['J'] = ni['K'] = ni['L'] = 5;
	ni['M'] = ni['N'] = ni['O'] = 6;
	ni['P'] = ni['R'] = ni['S'] = 7;
	ni['T'] = ni['U'] = ni['V'] = 8;
	ni['W'] = ni['X'] = ni['Y'] = 9;
	std::cin >> a;
	while (a>0) {
		c++;
		key[c] = a % 10;
		a /= 10;
	}
	std::reverse(key + 1, key + c + 1);
	while (std::cin >> s) {
		d++;
		ji[d] = s;
	}
	for (int i = 1; i <= d; ++i) {
		if (pd(ji[i]) == 1) {
			anss.insert(ji[i]);
            std::cout<<ji[i]<<"\n";
		}
	}
	if (anss.empty()) {
		std::cout << "NONE";
		return 0;
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...