网易2019校招C++研发工程师笔试编程题
丰收?
(忘了题目了QAQ)
题目描述:
输入描述:
测试样例:
5
2 7 3 4 9
3
1 25 11
输出
1
5
3
思路:
前缀和+二分
第i个位置表示前i堆苹果总数量,利用二分查找输入苹果所在的位置
代码:
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <queue> #include <map> #include <list> #include <utility> #include <set> #include <algorithm> #include <deque> #include <vector> #define IO ios::sync_with_stdio(false);\ cin.tie();\ cout.tie(); using namespace std; typedef long long ll; typedef vector<int > vi; const ll INF = 0x3f3f3f3f; ; + ; int a[MAX]; int front_a[MAX]; int main() { int n,m; scanf("%d",&n); ; i <= n; i++) { scanf("%d", a + i ); front_a[i] = front_a[i-] + a[i]; } scanf("%d",&m); while(m--) { int q; scanf("%d",&q); ,right = n; while(left < right) { ; if(front_a[middle] < q ) { left = middle+; } else if(front_a[middle]>q){ right = middle; }else { left = middle; break; } } printf("%d\n",left); } ; } /* 5 2 7 3 4 9 3 1 25 11 */
塔
题目描述
小易有一些立方体,每个立方体的边长为1,他用这些立方体搭了一些塔
现在小男定义:这些场的不稳定值为它们之中最高的塔与最低的塔的高度差,
小易想让这些塔尽量稳定,所以他进行了如下操作:每次从基座楼上取下块立方体并把它到号空塔上,
注意,小题不会把立方体放到它原本的那座塔上,因为他认为这样无意义
输入描述
第一行一个n(1<=n<=100),一个k(1<=k<=1000)
第二行ai(1<=ai<=10000)代表每个塔的高度
输出描述
第一行输出一个s,一个m,s代表最低的不稳定性,m为操作步数
接下来m行每行代表a塔向b塔移动一个单位
测试样例:
样例输入:
3 2
5 8 5
样例输出
0 2
2 1
2 3
思路:
因为数据量不大,全程模拟,先将所有的塔从低到高排序 将最高塔移动一个单位给最低塔 再排序移动 最多循环k次
如果最低与最高塔的差小于等于1,直接退出。
PS:描述可能有差池,请见谅 还有 这仅代表个人思路 笔试过程中仅通过20%(听说此题已重判,故妄自菲薄的贴上代码,望大神指正)
代码:
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <queue> #include <map> #include <list> #include <utility> #include <set> #include <algorithm> #include <deque> #include <vector> #define IO ios::sync_with_stdio(false);\ cin.tie();\ cout.tie(); using namespace std; typedef long long ll; typedef vector<int > vi; const ll INF = 0x3f3f3f3f; ; + ; typedef struct node { int pos; int high; } node; node High[N]; bool cmp(node a , node b) { return a.high < b.high; } int main() { int n,k; scanf("%d%d",&n,&k); ; i <= n; i++) { scanf("%d",&High[i].high); High[i].pos = i; } queue <pair<int,int> > q; ,num = ; sort(High + , High+n+,cmp); ; ; i < k; i++) { ].high<=) { value = High[n].high - High[].high; flag = ; break; }else { High[n].high--; High[].high++; num++; q.push(pair<].pos)); } sort(High + , High+n+,cmp); } ) { value = High[n].high - High[].high; } printf("%d %d\n",value,num); while(!q.empty()) { int x = q.front().first; int y = q.front().second; q.pop(); printf("%d %d\n",x,y); } ; } /* 3 2 5 8 5*/
整理房间
题目描述
又到了周末,小易的房间乱得一团糟。
他希望将地上的杂物稍微整理下,使每团杂物看起来都紧凑一些, 没有那么乱。
地上一共有n团杂物,毎团杂物都包含4个物品。第i物品的坐标用(ai,bi)表示,小易毎次都可以将
它绕着(xi,yi)逆时针旋转90°,这将消耗他的一次移动次数。如果一团杂物的4个点构成了一个面
积不为0的正方形,我们说它是紧凑的。
因为小易很懒,所以他希望你帮助他计算一下每团杂物最少需要多少步移动能使它変得紧凑。
输入描述
第一行一个数(1 <= n <= 100),表示杂物的团数。
接下来4n行,毎4行表示一团杂物,毎行4个数xi, yi, ai, bi(-10^4<= xi, yi,
ai,bi <= 10^4),表示第i个物品旋转的中心点坐标和它本身的坐标。
輸出描述:
n行,毎行1个数,表示最少移动次数。
示例1
输入
4
1 1 0 0
-1 1 0 0
-1 1 0 0
1 -1 0 0
-2 1 0 0
-1 1 0 0
1 -1 0 0
1 1 0 0
-1 1 0 0
-1 1 0 0
-1 1 0 0
2 2 0 1
-1 0 0 -2
3 0 0 -2
-1 1 -2 0
输出
1
-1
3
3
说明
对于第一团杂物,我们可以旋转第二个或者第三个物品1次。
思路:
暴力枚举每团杂物4 ^ 4次旋转
代码:
来自牛客大神的代码。
作者:NotDeep 链接:https://www.nowcoder.com/discuss/92989?type=0&order=0&pos=6&page=0 来源:牛客网 #include <bits/stdc++.h> using namespace std; struct point { int x, y; point(, ) : x(x), y(y) {} point operator+(const point &rhs) const { return point(x + rhs.x, y + rhs.y); } point operator-(const point &rhs) const { return point(x - rhs.x, y - rhs.y); } point rotate() { return point(-y, x); } point rotate(const point &o) const { return o + (*this - o).rotate(); } bool operator==(const point &rhs) const { return x == rhs.x && y == rhs.y; } }; bool check(const point &a, const point &b) { && a.y == || b.x == && b.y == ) return false; if (a.x * a.x + a.y * a.y != b.x * b.x + b.y * b.y) return false; ) return false; return true; } int main() { int n; cin >> n; while (n--) { point p[], o[], a[]; ; i < ; i++) scanf("%d %d %d %d", &p[i].x, &p[i].y, &o[i].x, &o[i].y); ; int x, y, z, w; , a[] = p[]; x < ; x++) { , a[] = p[]; y < ; y++) { , a[] = p[]; z < ; z++) { , a[] = p[]; w < ; w++) { int cost = x + y + z + w; ] + a[] == a[] + a[] && check(a[] - a[], a[] - a[]) || a[] + a[] == a[] + a[] && check(a[] - a[], a[] - a[]) || a[] + a[] == a[] + a[] && check(a[] - a[], a[] - a[])) { || res > cost) res = cost; } a[] = a[].rotate(o[]); } a[] = a[].rotate(o[]); } a[] = a[].rotate(o[]); } a[] = a[].rotate(o[]); } printf("%d\n", res); } ; }
网易2019校招C++研发工程师笔试编程题的更多相关文章
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
编程题很简单.整个试卷结构为: 一.问答题: 对前端的理解,了解哪些框架库? 二.在线编程题:身份证分组 如下第一道:身份证分组 三.在线编程题:身份证分组.统计字符.酒店价格(三选二) 如下第二三四 ...
- 网易校招C++研发工程师笔试题
选择题: mysql主从复制,server_id问题 mysql key_len 找以.conf为结尾的文件 问答题: 实现一个超大整数的类 并实现加减法功能 用string实现大数加减法(博客里以前 ...
- 网易2019校招内推编程题-瞌睡-C++实现
[编程题] 瞌睡 时间限制:1秒 空间限制:262144K 小易觉得高数课太无聊了,决定睡觉.不过他对课上的一些内容挺感兴趣,所以希望你在老师讲到有趣的部分的时候叫醒他一下.你知道了小易对一堂课每分钟 ...
- 网易2019校招内推编程题-俄罗斯方块-C++实现
[编程题] 俄罗斯方块 时间限制:1秒 空间限制:262144K 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同.荧幕上一共有 n 列,每次都会有 ...
- 网易2016研发project师编程题
http://www.nowcoder.com/test/970447/summary [编程题] 小易的升级之路 小易常常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a ...
- 2017 CVTE春招内推专场 C/C++软件开发岗笔试编程题
先来一波吐槽:选择题全是不定项选择,考的内容在我看来,"反正我接受唔到咯". 比如: 1.Windows操作系统某个通信机制(具体题目忘了,反正答案我选了个熟悉的名词"消 ...
- HW2018校招研发笔试编程题
1. 数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间 ...
- 网易2016年研发project师编程题(2)
序 网易互联网的实习笔试立即就開始了,做几个练习题熟悉熟悉~嘿嘿~ 题目一: 小易的升级之路 小易常常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内 ...
- 百度2019校招Web前端工程师笔试卷(9月14日)
8月27日晚,在实习公司加班.当时正在调试页面,偶然打开百度首页console,发现彩蛋,于是投了简历. 9月14日晚,七点-九点,在公司笔试. 笔试题型(有出入): 一.单选20道 1.难度不难,考 ...
随机推荐
- 爬虫服务集群处理nginx返回504
最近在对爬虫服务做分布式服务的时候总是遇到服务器返回504,搞了两天才发现原来是nginx中有对超时的设置参数,自己都是用默认的,然而客户端的等待时间超过了nginx默认的超时设置 修改 keepal ...
- 动态规划小结 - 二维动态规划 - 时间复杂度 O(n*n)的棋盘型,题 [LeetCode] Minimum Path Sum,Unique Paths II,Edit Distance
引言 二维动态规划中最常见的是棋盘型二维动态规划. 即 func(i, j) 往往只和 func(i-1, j-1), func(i-1, j) 以及 func(i, j-1) 有关 这种情况下,时间 ...
- 话说Svn与Git的区别
这篇主要是谈谈两者的区别,至于谁优谁劣看官自己思考吧! 把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点 ...
- Axis2 WebService(配置、发布、调用)
准备工作 1.下载:axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址:http://axis.apache.org/axis2/java/core/ 2.环境变 ...
- 51nod 1170 1770 数数字(数学技巧)
解题思路:看到题后,直接想到分成两种情况: ①:a*b >9 这里又分成两种 1. n==1 a*b 直接是一个两位数 求得十位和个位(这里十位和个位不可能相等) 然后如果等于d 则结果=1 2 ...
- 验证组件——FluentValidation
FluentValidation FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开 ...
- 【BZOJ1879】【SDOI2009】Bill的挑战 [状压DP]
Bill的挑战 Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input 第一行:一个整数T, ...
- bzoj1862/1056: [Zjoi2006]GameZ游戏排名系统
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1862 http://www.lydsy.com/JudgeOnline/problem.ph ...
- 【BZOJ】1477 青蛙的约会
[算法]扩展欧几里德算法(模线性方程) [题解]http://hzwer.com/2121.html 一些问题写在http://www.cnblogs.com/onioncyc/p/6146143.h ...
- Python的异常处理机制 -- (转)
当你的程序中出现异常情况时就需要异常处理.比如当你打开一个不存在的文件时.当你的程序中有一些无效的语句时,Python会提示你有错误存在. 下面是一个拼写错误的例子,print写成了Print.Pyt ...