校招全国统一模拟笔试(三月场)编程题参考代码

开锁

思路分析

对每个数字,比较是加过去步数少,还是减过去步数少即可。

参考代码

#include <bits/stdc++.h>
using namespace std;

int n, s, i;
string a, b;
int main() {
	cin >> n >> a >> b;
	for (int i = 0; i < n; i++) s += min((a[i] - b[i] + 10) % 10, (b[i] - a[i] + 10) % 10);
	cout << s << endl;
}

加减二叉树

思路分析

所有n都不大于2^k。考虑到n等于2^k时,一直往左走最后一步往右走。n等于2^k-1时一直往左走。n等于2^k-d时,分d是奇数偶数讨论最后一步的走法(奇左偶右),前面k-1步一直往左走,令减去的值刚好等于d/2向下取整。

参考代码

#include <bits/stdc++.h.h>

using namespace std;

int main() {
	long long n, k, a, d, b, i;
	scanf("%lld%lld", &n, &k);
	a = 1LL<<k;
	d = a - n;
	b = d / 2;
	for(i = 0; i < k; i++) {
		if((1LL<<i) & b)printf("%lld -\n",(1LL<<i));
		else {
			if(i == k - 1) {
				if(d & 1) printf("%lld +\n",(1LL<<i));
				else printf("%lld +\n",(1LL<<i)+1LL);
			}
			else printf("%lld +\n",(1LL<<i));
		}
	}
	return 0;
}

走斜线

思路分析

要到达目的地花费的最小步数是x和y的最大值,如果k小于这个值就一定到不了。如果k溢出了,那么在整个k步里,最多只会走两条直线。分别是如下三种情况(令x<=y):0条直线(y-x)是偶数且(k-x)是偶数;1条直线(y-x)是奇数;2条直线(y-x)是偶数且(k-x)是奇数。

参考代码

#include <bits/stdc++.h>

using namespace std;

int main() {
	int T;
	long long x, y, k, t, ans;
	scanf("%d", &T);
	while(T--) {
		scanf("%lld%lld%lld",&x,&y,&k);
		if(x > y) {
			t = x;
			x = y; 
			y = t;
		}
		if(y > k) {
			puts("-1");
			continue;
		}
		ans = k;
		if((y - x) % 2) ans--;
		else if((k - x) % 2) ans -= 2;
		printf("%lld\n", ans);
	}
	return 0;
}

得分最大

思路分析

双方都要使自己的得分尽可能比对方多,就有两种策略:使自己得分越多越好;使对方得分越少越好。所以贪心比较当前自己盒子里分值最大的彩球和对方盒子里分值最大的彩球,如果自己的分比较多,就从自己盒子里拿(自己得分越多越好),否则从对方盒子里拿(对方得分越少越好)。

参考代码

#include <bits/stdc++.h>
using namespace std;

int a[100015],b[100015];

bool _cmp(int i, int j){return i > j;}

int main() {	
	int n;
	long long ans;
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	for(int i = 1; i <= n; i++) scanf("%d", &b[i]);
	sort(a + 1, a + 1 + n, _cmp);
	sort(b + 1, b + 1 + n, _cmp);
	ans = 0;
	int i = 1;
	int j = 1;
	while(i <= n || j <= n) {
		if(a[i] > b[j]) ans += a[i++];
		else j++;
		if(b[j] > a[i]) ans -= b[j++];
		else i++;
	}
	printf("%lld", ans);
	return 0;
}
#校招##笔试题目#
全部评论
都是考一样的吗?我报的前端也是这些题,用js写简直崩溃了。
点赞
送花
回复
分享
发布于 2019-03-14 21:57
楼主 最后一题会不会数组越界
点赞
送花
回复
分享
发布于 2019-03-14 23:13
秋招专场
校招火热招聘中
官网直投
只有最后一道有思路,还没完全写出来,前面的二叉树和斜着走真是哭辽。。。
点赞
送花
回复
分享
发布于 2019-03-14 23:38
而且我觉得加减二叉树那一题有问题答案。。。。。
点赞
送花
回复
分享
发布于 2019-03-15 14:19
点赞
送花
回复
分享
发布于 2019-03-14 21:12
楼主还缺女盆友嘛
点赞
送花
回复
分享
发布于 2019-03-14 21:14
点赞
送花
回复
分享
发布于 2019-03-14 21:21
下午也有一场 吗?🤣
点赞
送花
回复
分享
发布于 2019-03-14 21:21
点赞
送花
回复
分享
发布于 2019-03-14 21:22
第二题是数学问题吧
点赞
送花
回复
分享
发布于 2019-03-14 21:23
对于加减树的那个代码, 输入26和4的时候得到的结果不对啊
点赞
送花
回复
分享
发布于 2019-03-14 21:44
点赞
送花
回复
分享
发布于 2019-03-14 22:02
点赞
送花
回复
分享
发布于 2019-03-14 22:40
点赞
送花
回复
分享
发布于 2019-03-14 22:40
表示没做过的完全想不出 
点赞
送花
回复
分享
发布于 2019-03-14 23:07
求题意,或者牛能会把题目发出来吗
点赞
送花
回复
分享
发布于 2019-03-15 01:46
看头文件就知道,,楼主打acm的吧
点赞
送花
回复
分享
发布于 2019-03-15 09:59
  为什么走斜线用longlong啊?题目不是说不超过一百万吗?
点赞
送花
回复
分享
发布于 2019-03-15 10:59
本地测试两个测试用例都是一次通过,然后提交 0%,两道题都这样,有点小郁闷,思路都差不多的,最气的是,有一道题,根本没有用数组,然后报错数组越界了😂😂😂
点赞
送花
回复
分享
发布于 2019-03-15 11:28
点赞
送花
回复
分享
发布于 2019-03-15 12:13

相关推荐

感觉这一周太梦幻了,就像一个梦,很不真实~~~感觉这个暑期,我的运气占了99成,实力只有百分之一4.15上午&nbsp;腾讯csig&nbsp;腾讯云部门,面完秒进入复试状态4.16下午&nbsp;美团优选供应链部门,4.18上午发二面4.17晚上&nbsp;阿里国际一面,纯拷打,面完我都玉玉了4.18下午&nbsp;阿里国际二面,是我们leader面的我,很轻松~~4.18晚上&nbsp;约了hr面4.19上午&nbsp;hr面,下午两点口头oc4.19晚上&nbsp;意向书说起来我的暑期好像一次都没挂过~~~~~难道我是天生面试圣体?----------------------------------------------------------------------六个月前,我还是0项目0刷题,当时想的是先把论文发出来再去找实习。结果一次组会,老师打破了我的幻想(不让投B会,只让投刊或者A)我拿头投啊!!!然后就开始物色着找实习,顺便做完了mit的6.s081,但是基本上还是没刷过题目-----------------------------------------------------------------------11月&nbsp;&nbsp;一次偶然的机会,面进了某个耳机厂的手环部门,大概是做嵌入式的,用的是CPP。12月&nbsp;莫名其妙拿到了国创的面试机会,0基础四天速成java基础!居然也给我面过了hhhhh,可能是面试没写题吧入职国创后的几个月,一直没活,天天搁那看剧,都快忘了还有暑期实习这回事了~~~~命运的齿轮在2.26开始转动,因为这一天美团开了,我开始慌了,因为那时的我什么都不会。lc,八股,sql全部是0进度。然后就开始了女娲补天,上班刷题,下班继续做之前的开源,顺便学一学八股。3月到现在,lc也刷到快200了,一天最多提交了47次~~~~~~~~~~八股根据别人的面经总结和博客,写了快十万字的笔记~~~~~~~~~~简历上的实习经历和开源,也努力去深挖了,写了几万字的记录~~~~~~所以面试的时候,基本上都能cover了,面试官问到的基础基本都会,不基础的我就把他往我会的地方引。结果好像还不错,基本上每个面试官评价都挺好的emmmmmmmm
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
转发
点赞 138 评论
分享
牛客网
牛客企业服务