热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2022网易雷火游戏研发笔试ak(4月23日)

首先,可以用自己的IDE!!!模拟体验满分!!!下午刚打完天梯赛,被模拟折磨了一下午,晚上又被模拟折磨惹。40分钟(好像是)写完ABC,看了看D发现是阅读理解,本来准备交卷开摆,后

首先,可以用自己的IDE!!!模拟体验满分!!!

下午刚打完天梯赛,被模拟折磨了一下午,晚上又被模拟折磨惹。

40分钟(好像是)写完ABC,看了看D发现是阅读理解,本来准备交卷开摆,后来想了想,多交几发枚举一下题意试试,发现和天梯赛的模拟难度差不多。。。

A题:签到,怎么写都能过吧

B题:签到,直接dp即可

C题:他让你怎么写你就怎么写

#include
using namespace std;
#define ll long long
struct func {
string name;
string argdf;
vectors;
vectori;
}fun[1000];
maphtd;
string ITS(int x) {
string res="";
if (!x)return "0";
bool flag = 1;
if (x <0)
flag = 0, x = -x;
while (x) {
res = char((x % 10) + '0') + res;
x /= 10;
}
if (!flag)
res = '-' + res;
return res;
}
int main()
{
for (int i = 0; i <= 9; i++)
htd[char(i + '0')] = i;
htd['A'] = 10;
htd['B'] = 11;
htd['C'] = 12;
htd['D'] = 13;
htd['E'] = 14;
htd['F'] = 15;
int n;
cin >> n;
for (int i = 1; i <= n;i++) {
int x;
cin >> x;
string name, argd;
cin >> name >> argd;
fun[x].name = name;
fun[x].argdf = argd;
}
string rpcs="";
string tmp;
while (cin >> tmp) {
rpcs += tmp;
}
int now = 0;
for (; now int rpcid = 0;
rpcid = htd[rpcs[now]] * 16 + htd[rpcs[now + 1]];
assert(rpcid <256);
now += 2;
string name = fun[rpcid].name;
int tot = 0;
for (auto i:fun[rpcid].argdf) {
if (i == 's')
tot++;
}
queuelen;
for (int i = 1; i <= tot; i++) {
len.push(htd[rpcs[now]] * 16 + htd[rpcs[now + 1]]);
now += 2;
}
for (auto o : fun[rpcid].argdf) {
if (o == 's') {
string tmp = "";
int i = len.front();
len.pop();
for (int j = 1; j <= i * 2; j++) {
tmp += rpcs[now++];
}
fun[rpcid].s.push_back(tmp);
}
else {
int sum = 0;
for (int j = 1; j <= 8; j++) {
sum = sum * 16 + htd[rpcs[now++]];
}
fun[rpcid].i.push_back(sum);
}
}
string ans = name + "(";
int pt1 = 0, pt2 = 0;
for (auto i : fun[rpcid].argdf) {
if (i == 's') {
ans += "\"";
ans += fun[rpcid].s[pt1++];
ans += "\"";
}
else {
ans += ITS(fun[rpcid].i[pt2++]);
}
ans += ",";
}
fun[rpcid].s.clear();
fun[rpcid].i.clear();
ans.pop_back();
ans += ")";
cout < }
return 0;
}

D题:同上,需要一点点技巧。由于输入已经分好词了,所以对于每条question,遍历每个规则,用栈匹配处理括号,同时对于规则里每个词都去这条question里找存不存在,就可以把规则中的单词变成0和1,然后规则就变成只含\(+\)\(*\)和括号的布尔表达式求值

剩下的就是他怎么说你怎么写了。

#include
using namespace std;
#define ll long long
mapid;
setq[50];
vectorans;
string getNextWord(string& s, int& i) {
if (i >= s.length())return "";
while (s[i] == ' ')
i++;
string res = "";
while (i res = res + s[i++];
return res;
}
int main()
{
int n, m;
cin >> n >> m;
string s;
getline(cin, s);
int cnt = 0;
for (int i = 1; i <= n; i++) {
getline(cin, s);
string tmp = "";
for (int j = 0; j if (s[j] == ' ') {
if (id.find(tmp) == id.end())
id[tmp] = ++cnt;
q[i].insert(id[tmp]);
tmp.clear();
continue;
}
tmp += s[j];
}
if (id.find(tmp) == id.end())
id[tmp] = ++cnt;
q[i].insert(id[tmp]);
}
for (int i = 1; i <= m; i++) {
getline(cin, s);
ans.push_back(s);
}
for (int qi = 1; qi <= n; qi++) {
auto que = q[qi];
bool ok = 0;
int mx = 0;
string res;
for (auto as : ans) {
int i = 0;
stackstk;
int flag = 0;
string now = "";
int tot = 0;//关键词数量
while (1) {
now = getNextWord(as, i);
if (now == "")break;
if (now == "and") {
flag = 1;
}
else if (now == "or") {
flag = 0;
}
else if (now == ")") {
while (1) {
int x = stk.top();
stk.pop();
if (stk.top() == 114 || stk.top() == 514) {
if (stk.top() == 114) {
flag = 0;
stk.pop();
stk.push(x);
}
else {
flag = 1;
stk.pop();
stk.top() &= x;
}
break;
}
stk.top() |= x;
}
}
else if (now == "(") {
if (flag == 0)
stk.push(114);
else
stk.push(514);
flag = 0;
continue;
}
else {
tot++;
int x = 0;
if (id.find(now) == id.end()) {
x = 0;
}
else {
if (que.find(id[now]) != que.end()) {
x = 1;
}
else {
x = 0;
}
}
if (flag == 0) {
stk.push(x);
}
else {
stk.top() &= x;
}
}
}
while (stk.size() > 1) {
int x = stk.top();
stk.pop();
stk.top() |= x;
}
if (stk.top() == 1) {
if (tot > mx) {
mx = tot;
res = as;
}
ok = 1;
}
}
if (!ok)
cout <<"miss" < else
cout < }
return 0;
}


推荐阅读
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • Hanks博士是一位著名的生物技术专家,他的儿子Hankson对数学有着浓厚的兴趣。最近,Hankson遇到了一个有趣的数学问题,涉及求解特定条件下的正整数x,而不使用传统的辗转相除法。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 本文详细介绍了 Redis 中的主要数据类型,包括 String、Hash、List、Set、ZSet、Geo 和 HyperLogLog,并提供了每种类型的基本操作命令和应用场景。 ... [详细]
  • 想把一组chara[4096]的数组拷贝到shortb[6][256]中,尝试过用循环移位的方式,还用中间变量shortc[2048]的方式。得出的结论:1.移位方式效率最低2. ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文深入探讨了动态赋值的概念及其在编程实践中的应用,特别是通过Java代码示例来展示如何利用循环结构动态地为数组分配值。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
author-avatar
qaz2502919927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有