昨晚把招行的实习笔试做了,1题卡了,2 ,3 AC了

因此特来总结一发,方便自己以后复习

1.发巧克力:依次给N个人发总数为N块巧克力,按照学号顺序给学生发巧克力,(数量随机,但是至少保证一快,因此后面学生可能没有巧克力)  ,求第一个人至少拿6块巧克力的方案数。(如7个人,只有6 1 00000和 7 000000 两种分法,当时没审题清楚,一直认为6 1 00000和6 0 1 0 000 是两种不同

#include<bits/stdc++.h>
using namespace std;
const int M=100001, MOD = 666666666;int a[M],n;
int main(){cin>>n;  //学生人数,同时也是巧克力人数a[0]=a[1]=1;for(int i=2; i<=n-6; i++)a[i]=(2*a[i-1])%MOD;int sum=0;for(int i=0; i<=n-6; i++){sum+=a[i];sum%=MOD;}cout<<sum;return 0;
}

2.给你n个boy,n个girl ,然后W表示茶壶的最大容量,然后n个茶杯,每个都有不同的容量,要求boy的茶杯里的茶水是girl的两倍,且boy和boy容量一样,girl和girl 容量一样,问如何倒茶,最大化总的茶量(codeForces Round  331)

这题简单,不过注意最后要和茶壶最大容量做对比,

#include <bits/stdc++.h>
using namespace std;
const int N=3*1e5+10;
double num[N];
int main()
{int n,w;while(scanf("%d%d",&n,&w)!=EOF){for(int i=1; i<=2*n; ++i) scanf("%lf",&num[i]);sort(num+1,num+1+2*n);double ans=min(num[1],num[n+1]/2);///排序玩后依次选择最小的ans=ans*3*n;ans=min(ans,1.0*w);printf("%.6f\n",ans);}return 0;
}

3.题意大致就是    n个数,每个数可以进行两次操作,第一种操作是翻倍,第二种操作是减半(取整),问最少操作数使这n个数变成同一个数 (codeforces Round 558)
Input 
第一行为一个整数n,第二行为n个整数 
Output 
输出最少操作数 
Sample Input 

3 5 6 
Sample Output 
5

这题有点麻烦,

思路如下

可以除以二或者乘以二,就相当于位运算的右移和左移。用两个数组,vis 数组, cnt 数组,刚开始都初始化为0,vis[i] 表示 i 这个数可以由几个数转化而来,cnt[i] 表示题目给出的 n 个数全部转化为 i 需要的操作数。 
首先遍历数组找到 ai 的最大值记为 Max,那么所有数转化的上界就是 Max,因为如果最终转化的数如果大于Max,那么所有值都要转化为大于Max的那个数,很明显这不是最后的答案。 
把一个数表示为二进制数, 
1、如果最低位是0,那么这个数右移一位(除以2),再左移一位(乘以2),就得到原来的数 
2、如果最低位是1,那么这个数右移一位(除以2),再左移一位(乘以2),得不到原来的数 
处理一个数 ai 
1、对 ai 执行左移操作,记录 ai 通过左移能够得到的数字,上限为Max,vis 数组加1,cnt数组记录步数 
2、对 ai 执行右移操作,直到 ai 为0 
若 ai 的最低位为1,右移一步之后,进行左移,上限为Max,维持vis数组和cnt数组 
若 ai 的最低位为0,右移一步,维持vis数组和cnt数组 
这样我们就把一个数的所有情况都处理出来了,并且是最少的操作数。最后遍历数组找 vis[i] 为n,并且操作数最小。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 100005
int n;
int a[maxn],vis[2*maxn],cnt[2*maxn];
int main()
{while(scanf("%d",&n)!=EOF){int Max=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);Max=max(Max,a[i]);}memset(vis,0,sizeof(vis));memset(cnt,0,sizeof(cnt));for(int i=0;i<n;i++){int temp1=a[i],temp2=a[i];int step1=0,step2=0;vis[temp1]++;while(temp1<=Max){temp1<<=1;vis[temp1]++;step1++;cnt[temp1]+=step1;}while(temp2>0){if(temp2%2&&temp2!=1){temp2>>=1;step2++;vis[temp2]++;cnt[temp2]+=step2;int temp3=temp2;int step3=step2;while(temp3<=Max){temp3<<=1;vis[temp3]++;step3++;cnt[temp3]+=step3;}}else{temp2>>=1;step2++;vis[temp2]++;cnt[temp2]+=step2;}}}int ans=1<<30;for(int i=0;i<2*Max;i++)if(vis[i]==n)ans=min(ans,cnt[i]);printf("%d\n",ans);}return 0;
}

参考    https://blog.csdn.net/V5ZSQ/article/details/47082701

https://blog.csdn.net/u013050857/article/details/46707563

19年 招行暑期实习笔试题有感!!相关推荐

  1. 2014.3.29阿里巴巴暑期实习笔试题分析

    參考:http://blog.csdn.net/iloveyoujelly/article/details/22941531 以下中的[分析]是我给出的. 2014.3.29阿里巴巴暑期实习笔试题分析 ...

  2. 2022暑期实习笔试题总结(网易,华为,360,美团)

    暑期投的比较晚,总结一下目前做过的一些笔试题 网易0327 题目:传送门 解析:传送门好像没有第三题 总结: 第一题不难,想的比较复杂,看到很多人说枚举就可以做,本人非要在做题的时候想一个" ...

  3. 联发科2022暑期实习笔试题

    笔试题一共八道,第一道是根据门电路写逻辑表达式.第二个是根据逻辑门和触发器连接图和给定信号的波形,补全波形.第三个记不清了.第四个是智力推理题,难度很小.第五个是描述做过的项目.第六个是脚本编程题.第 ...

  4. 微软2019暑期实习笔试题

    微软2019招暑期实习生的编程题 问题一:  [玻璃球游戏] 一个队伍中N个人从1到N编号,N个人之间的连线方式如下:编号为K的人和编号为J的人相连(J exactly divides K),玻璃球可 ...

  5. 华为2019暑期实习笔试题

    目录 第一题 题意 思路 代码 第二题 题意 思路 代码 第三题 题意 思路 代码 笔试共有3道编程题,分别为100分.200分.300分,两个小时.以下内容的编写全凭记忆和个人理解,如有什么不对的地 ...

  6. 招商银行信用卡中心(信息技术部)暑期实习笔试题

    时间:4月11日晚18:00-19:30 地点:东华大学 试卷:(拿到卷子,扫了一眼,持续懵逼中) 第一部分选择题: 1.操作系统进程相关的,2.哈夫曼树,3.哪个排序初始状态对系统系能没影响(差不多 ...

  7. C语言单链表实现FCFS算法,2014腾讯实习笔试题

    2014腾讯实习笔试题 1. 关于二叉树,下面说法正确的是() A. 对于N个节点的二叉树,其高度为nlog2n; B. 一个具有1025个节点的二叉树,其高度范围在11~1025之间 C. 二叉树的 ...

  8. 育碧Web实习笔试题分享

    育碧的Web实习笔试题分享 笔试题目一共有20道,主要有选择题,简答题以及编程题,但是大部分都是简答题,题干是全英语的,但是大致题意还是能够读懂.考查知识大体涉及JavaScript.HTTP.CSS ...

  9. 2021.4.11 字节跳动实习笔试题---情报解密

    2021.4.11 字节跳动实习笔试题-情报解密 题目内容 题目内容: 给你一个字符串,该字符串中有数字,字母(字母只有大写字母)以及一些其他的字符(例如:%,.等),如果首字母为字母或者数字的话,就 ...

最新文章

  1. poj3304(线段相交问题)
  2. PXE新手经典思路引导
  3. 使用ABAP编程实现对微软Office Word文档的操作
  4. python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
  5. ios runloop学习
  6. idea中如何创建接口
  7. mysql to char 用法_postgresql 中的to_char()常用操作
  8. SweetAlert2网页弹窗---JAVASCRIPT弹窗
  9. flask-login
  10. T470 Win10下触摸板手势
  11. 每天学命令get_property
  12. 为什么魂斗罗只有128KB却能实现那么长的剧情有答案了
  13. Linux大神进阶二十:Mariadb服务管理
  14. 5 torch.utils.data (Dataset,TensorDataset,DataLoader)
  15. ssm项目笔记(五)图片存储方案
  16. Linux服务器运维常用命令(持续更新)
  17. C/S与B/S应用的区别
  18. 运行金蝶KIS记账王V10.0对系统有什么要求
  19. 机载激光雷达数据获取及生产流程
  20. linux-网络-nc命令

热门文章

  1. Windows10+Qt+Opencv+freetype 解决putText中文乱码问题
  2. micropython int与bytes之间的转换
  3. Java适配器模式详解和实际应用
  4. 新概念英语第一册(27)
  5. Au 音频效果参考:诊断
  6. 计算机一级wps必背知识点,2019年计算机一级WPS考试备考知识点(三)
  7. Linux shell 日期,时间相关的命令
  8. 基于DataHub元数据血缘管理实施方案
  9. vscode之python框架flask 断点调试的配置(官方推荐的配置,务必注意端口)
  10. 第十章 Matplotlib绘图方法