• 过题情况
  • 第一题 100%
  • 第二题 100%
  • 第三题 100%
  • 第四题 20%

第一题:

小模拟

#include<bits/stdc++.h>
using namespace std;
const int maxn=200;
int a[maxn];
int main(){int k,n;scanf("%d%d",&k,&n);int flag=0, step=0, ret=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);if(step==k)flag=1;step+=a[i]; if(step>k){step=2*k-step;ret+=1;}}if(flag==1)printf("paradox\n");else printf("%d %d\n", k-step, ret);return 0;}

第二题

暴力模拟向左/右转1-3次,向上/下转1-3次,即六种情况,遍历六次就能得到所有的情况,取字典序最小的作为统一答案进行统计。

#include<bits/stdc++.h>
using namespace std;
map<int,int>q;
int a[10];
int num=1e9;
void dfs(int b[], int step){if(step==6)return;int tmp=0;for(int i=1;i<=6;i++)tmp=tmp*10+b[i];num=min(num,tmp);for(int i=1;i<=6;i++){int c[10];if(i==1){c[1]=b[1];c[2]=b[2];c[3]=b[5];c[4]=b[6];c[5]=b[4];c[6]=b[3];}else if(i==2){c[1]=b[1];c[2]=b[2];c[3]=b[4];c[4]=b[3];c[5]=b[6];c[6]=b[5];}else if(i==3){c[1]=b[1];c[2]=b[2];c[3]=b[6];c[4]=b[5];c[5]=b[3];c[6]=b[4];}else if(i==4){c[1]=b[6];c[2]=b[5];c[3]=b[3];c[4]=b[4];c[5]=b[1];c[6]=b[2];}else if(i==5){c[1]=b[2];c[2]=b[1];c[3]=b[3];c[4]=b[4];c[5]=b[6];c[6]=b[5];}else if(i==6){c[1]=b[5];c[2]=b[6];c[3]=b[3];c[4]=b[4];c[5]=b[2];c[6]=b[1];}dfs(c, step+1);}
}
int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++){for(int j=1;j<=6;j++)scanf("%d",&a[j]);num=1e9;dfs(a, 0);q[num]+=1;}map<int, int>::iterator it;priority_queue<int>que;for(it=q.begin();it!=q.end();it++){que.push(it->second);}printf("%d\n%d",que.size(), que.top());que.pop();while(!que.empty()){printf(" %d",que.top());que.pop();}printf("\n");return 0;
}

第三题

二分完求区间最小值,这里用的树状数组,注意单个点的情况。
好吧,我第三题当时没好好想,其实就是二分后求一个后缀的最小值,不用树状数组求区间最值,当时没想清楚。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+200;
int n,m,t;
struct node{int x,y;
}a[maxn],b[maxn];
bool cmp(node c,node d){return c.x<d.x;
}
int c[maxn],d[maxn];
int lowbit(int x){return x&(-x);
}
void update(int x){while(x<=n){c[x]=a[x].y;int lx=lowbit(x);for(int i=1;i<lx;i<<=1)c[x]=min(c[x],c[x-i]);x+=lowbit(x);}
}
int query(int x,int y){int ans=1e9;while(y>=x){ans=min(a[y].y, ans);y--;for(;y-lowbit(y)>=x;y-=lowbit(y))ans=min(c[y],ans);}return ans;
}
int main(){scanf("%d%d%d",&n,&m,&t);for(int i=1;i<=n;i++)scanf("%d%d",&a[i].y,&a[i].x);for(int i=1;i<=m;i++)scanf("%d%d",&b[i].y,&b[i].x);sort(a+1,a+n+1,cmp);sort(b+1,b+m+1,cmp);if(a[n].x+b[m].x<t){printf("-1\n");return 0;}int ans=1e9;for(int i=1;i<=n;i++){update(i);d[i]=a[i].x;if(a[i].x>=t)ans=min(a[i].y, ans);//printf("%d\n", d[i]);}for(int i=1;i<=m;i++){if(b[i].x>=t){ans=min(ans, b[i].y);}else {int pos=lower_bound(d+1,d+1+n,t-b[i].x)-d;ans=min(ans, b[i].y+query(pos, n));}}if(t==0)printf("0\n");else printf("%d\n",ans);return 0;
}

第四题

还有半小时不太想写了,10min暴力骗分20%。
看到牛客有大牛用插头dp搞得

#include<bits/stdc++.h>
using namespace std;
const int maxn=10;
const int mod=1e9+9;
char c[maxn][maxn];
int a[maxn][maxn];
int ans=0;
vector<pair<int,int> >q;
int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};
bool check(){for(int k=0;k<(int)q.size();k++){int i=q[k].first, j=q[k].second;int flag=0;for(int z=0;z<4;z++){int x=i+dx[z],y=j+dy[z];if(x<0||x>5||y<0||y>5||c[x][y]=='*')continue;if(a[i][j]==a[x][y])flag=1;}if(flag==1)return 0;}return 1;
}
void dfs(int pos){if(pos==(int)q.size()){if(check())ans++;return ;}for(int i=1;i<=6;i++){a[q[pos].first][q[pos].second]=i;dfs(pos+1);}
}
int main(){for(int i=0;i<6;i++){scanf("%s",c[i]);for(int j=0;j<6;j++)if(c[i][j]=='#')q.push_back(make_pair(i, j));}dfs(0);printf("%d\n",ans);
}

拼多多算法岗第一场笔试 2020.08.02相关推荐

  1. 拼多多服务端研发工程师笔试

    拼多多服务端研发工程师笔试(2021年7月25日下午三点场) 前言+说明 一.算法编程题 题目描述 输入描述 输出描述 示例1 示例2 参考代码: 二.算法编程题 题目描述 输入描述 输出描述 示例1 ...

  2. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(2020.4.14更新)...

    推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面 ...

  3. 面试拼多多 Java 岗被刷了三次,在家闭关刷题66天,卷土重来,终获offer

    引言 这是群里一个朋友分享的故事,讲述的是他进入大厂拼多多的经历.(为数不多的,让我真心佩服的人) 他说之前就一直就想进拼多多工作,没有别的理由,就冲着他薪资待遇去的. 故事开始 (第一人称叙述)我是 ...

  4. 拼多多算法机制,微积分的实际应用

    近日,面对朋友发来的拼多多互助链接,我产生了较强的兴趣,毕竟一年前在拼多多邀请好友确实可以得到红包,我有幸成为其中一个,并基于大数据,确实有亲戚朋友得到红包的案例.于是,对于这次连接,我好奇拼多多的红 ...

  5. 拼多多Java岗校招-4面获得年薪66万offer

    点关注,不迷路:持续更新Java相关技术及资讯!!! 内容源于群友投稿!记录一次校招面试拼多多的面经,分享给大家,感谢支持! 前言 先什么都别说,直接有图有真相,某一本在校生,校招,年龄20岁,3+1 ...

  6. 拼多多算法笔试2020

    https://www.nowcoder.com/test/question/4efe0a1953114c4ea5cdec4cddbbfa88?pid=23354036&tid=3381342 ...

  7. 2020字节跳动校园招聘算法方向第一场考试题解

    第一题 [题意] 给出<a,b>,可以理解为a的爸爸是b,现在你要依次输出每个爸爸的所有儿子,儿子之间按照字典序排序 [思路] 思路不难,用map将爸爸的名字映射成数字,然后建一个二维ve ...

  8. 美团点评实习生算法岗笔试题 (java) 2020.04.23场

    T1 幸运星 题目描述 在观星的时候,一种常用的方式是划出类似于正方形的区域内,确定其中所有星星的坐标. 现在我们在星空(一个无限大的二维平面)上简历坐标系.由于星星很小,我们忽略它的面积,认为每一个 ...

  9. 字节跳动 | 游戏研发岗第一批笔试(题解)

    字节游戏研发岗笔试第一批:2小时4题,满分一百,不能使用本地ide,代码为acm模式 第一题_走迷宫(20分) 题面 给出长n宽m的迷宫(n和m都在1~500之间),迷宫由0和1组成,1表示有墙不能走 ...

最新文章

  1. 英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑
  2. [内存管理] linux kernel内存映射实例分析
  3. CodeForces - 600E Lomsat gelral(树上启发式合并)
  4. SQLite基本语法
  5. 给Domino系统管理员的十二项建议
  6. pythoni手机版下载_Python进度栏和下载
  7. django orm 数据查询详解
  8. Mysql各个版本之间的比较
  9. Spark:一个独立应用
  10. 惠普1020plus无法连接计算机,惠普1020打印机连不上是怎么回事
  11. 三菱伺服驱动器示例_三菱伺服电机+编码器(伺服控制器)的接线示例
  12. CUDA各版本官方下载地址
  13. HCIE-RS实验LAB1配置思路
  14. 如何申请免费163邮箱?如何申请163邮箱账号?
  15. 两年数据对比柱形图_职场必学技能,用PPT组合图表玩转多重数据分析展示!
  16. 信息服务器在哪里打开,internet信息服务(lls)管理器在哪里打开
  17. 重大发现:微信新上线的“群接龙”功能,你还不知道吗?
  18. Hibernate框架基础——cascade属性
  19. 《杭州区块链行业发展报告》披露市场现状
  20. 布局(左边的div随着右边div的高度变化而变化)

热门文章

  1. 四种形态图解_中纪委”四种形态“指标体系详解
  2. 工信部备案-公安备案
  3. AF---下一代防火墙
  4. MySQL中如何插入反斜杠
  5. Meteor 初级入门 三
  6. 神奇的 Python
  7. Java中 List、Set、Map 之间的区别
  8. android 粒子动画,使用animator实现粒子动画效果
  9. android 通知栏歌词,状态栏歌词插件下载
  10. 基于Matlab绘制自定义边长的正多边形