关于2024-4-15拼多多笔试

被A弄的有点红温了,这次题解就随便写写吧

A

一眼DP 因为最多挖掉两个空格 但是只有64分

调了快一小时的DP都没出答案,有人和我说,只考虑挖第一个或最后一个,或者挖前两个,最后两个,挖最前最后过了?????

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>

#define _for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
char s[10050];
long long dp[10050][3];
void solve(int n)
{
    scanf("%s",s+1);
    if(n<3)
    {
        printf("0 0\n");
        return;
    }
    int len=strlen(s+1);
    len=n;
    for(int i=0;i<=n+5;i++)
    {
        _for(j,0,2)
        {
            dp[i][j]=1000000000;
        }
    }
    dp[0][0]=0;
    _for(i,1,len)
    {
        _for(j,1,2) dp[i][j]=dp[i-1][j-1];
        if(i>=3)
        {
            dp[i][0]=dp[i-3][0]+abs((int)s[i-2]-'P')+abs((int)s[i-1]-'D')+abs((int)s[i]-'D');
            _for(j,1,2)
            {
                dp[i][j]=min(dp[i][j],dp[i-3][j]+abs((int)s[i-2]-'P')+abs((int)s[i-1]-'D')+abs((int)s[i]-'D'));
            }
        }
    } 
    printf("%d %lld\n",len/3,dp[len][len%3]);
}
int main(void)
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        solve(n);
    }
}
/*
6
ADDPBB
6
ADDPBB
7
ABCDEFG
7
ABCDEFG
7
ABCDEFG
6
ADDPBB
7
ABCDEFG

*/

B

由于当(a[i]==a[i+1])时,合法区间的左端点一定≥l,因此一边维护目前所有合法区间的和,一边加给更新答案即可

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>

#define _for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
#define MAXN 1000050
const int mod=10000007;
int arr[MAXN];
int main(void)
{
    int n;
    scanf("%d",&n);
    int ans=0;
    int cnt=0;
    int flag=0;
    _for(i,1,n) scanf("%d",&arr[i]);
    _for(i,1,n)
    {
        if(i==1||arr[i]==arr[i-1])
        {
            cnt=0;
            flag=0;
        }
        else
        {
            ++flag;
            cnt=(cnt)+(1ll*arr[i]*flag%mod)+arr[i-1];
            cnt%=mod;
            ans+=cnt;
            ans%=mod;
        }
        // printf("%d %d\n",cnt,ans);
    }
    printf("%d",ans);
}

C

枚举第一段,计算答案并且维护即可

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>

using namespace std;
#define _for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)

#define MAXN 1050
#define pii pair<int,int>
int n;
int arr[MAXN];
pii judge(int len)
{
    int req=0;
    int wid=len;
    _for(i,1,len)
    {
        req+=arr[i];
    }
    int need,cnt;
    need=req,cnt=0;
    _for(i,len+1,n)
    {
        need-=arr[i];
        ++cnt;
        if(need<0)
        {
            return pii(n+1,-1);
        }
        if(need==0)
        {
            need=req;
            wid=max(wid,cnt);
            cnt=0;
        }
    }
    if(need!=req)
    {
        return pii(n+1,-1);
    }
    return pii(wid,req);
}
int main(void)
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        _for(i,1,n) scanf("%d",&arr[i]);
        pii ans=pii(n+1,-1);
        _for(i,1,n)
        {
            ans=min(ans,judge(i));
        }
        printf("%d %d\n",ans.first,ans.second);
    }
}

D

做了个猜测,掰掉的巧克力要么取其中一块分,要么取其中一块的全部,用另一块分,由于时间紧张,没有去做数学证明,但是感觉比较合理,然后进行O(n^4)的DP即可

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>

using namespace std;
#define _for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
#define MAXN 55

int dp[MAXN][MAXN][MAXN];
void solve(int n,int m,int k)
{
    // printf("solve(%d %d %d)\n",n,m,k);
    dp[n][m][k]=998244353;
    if(n*m==k||k==0)
    {
        dp[n][m][k]=0;
        return;
    }
    if(n==0||m==0)
    {
        dp[n][m][k]=-1;
        return;
    }
    int cost;
    for(int i=1;i<n;i++)
    {
        cost=m*m;
        
        if(dp[n-i][m][k]!=-1) dp[n][m][k]=min(dp[n][m][k],dp[n-i][m][k]+cost);
        if(k-m*i>=0&&dp[n-i][m][k-m*i]!=-1) dp[n][m][k]=min(dp[n][m][k],dp[n-i][m][k-m*i]+cost);
        // printf("%d of n: %d\n",i,dp[n][m][k]);
    }
    for(int i=1;i<m;i++)
    {
        cost=n*n;
        if(dp[n][m-i][k]!=-1) dp[n][m][k]=min(dp[n][m][k],dp[n][m-i][k]+cost);
        if(k-n*i>=0&&dp[n][m-i][k-n*i]!=-1) dp[n][m][k]=min(dp[n][m][k],dp[n][m-i][k-n*i]+cost);
        // printf("%d of m: %d\n",i,dp[n][m][k]);
    }
    if(dp[n][m][k]==998244353) dp[n][m][k]=-1;
}
int main(void)
{
    _for(i,0,50) _for(j,0,50) _for(k,0,50) solve(i,j,k);
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        printf("%d\n",dp[x][y][z]);
    }
}

全部评论
a64 d20 bc满分能面试吗😢
2
送花
回复
分享
发布于 04-17 08:17 湖北
佬太强了
1
送花
回复
分享
发布于 04-16 01:04 安徽
网易互娱
校招火热招聘中
官网直投

相关推荐

腾讯居然是没有笔试的,投了简历然后直接约的面试。面试官提前来了,没开摄像头,我开了,面试体验还是很好的。个人刷题和八股准备的都不算充分,寄了也能理解。上来自我介绍,然后面试官说这次先考察基础知识,项目先不问。(我内心:就项目还多点,寄……)但是问的八股个人感觉算是偏基础,我自己看了大概两天还是能答出一部分。问的问题还蛮多的,凭印象回忆一下……讲一下四次挥手;客户端挂了的话会发生什么,http链接会一直保持吗,如果长时间挂了再上线会重连吗?http是tcp还是udp;一个网站上有100张图片,每个图片都要发起一个HTTP请求吗;http版本有了解吗;你说的https是http的一个版本吗;https是怎么加密的,对称还是非对称加密,是公钥还是私钥;数据库怎么查找优化;怎么提高数据库查找速度;你项目的主键外键是怎么做的;数据库索引怎么实现的;数据范围查找是怎么查找的;讲一下操作系统的进程间的通信;是怎么通信的;讲一下给你一个无序数组,取出前K大的数;具体怎么排序;时间复杂度是多少;手撕代码:力扣53题,这题印象很深,那天晚上做了一晚上没做出来,当时看答案看了好久才搞明白,所以一看到这道题就发现做过,然后大脑蒙了哈哈哈,最后也没做出来,状态方程也没搞出来,主打一个忘干净了。总之八股的时候我经常是对什么东西有点印象,然后说了这个东西,面试官就会深入问你这个。个人感觉要是撕出来还有机会,没撕出来挂了很合理。
点赞 评论 收藏
转发
3.20&nbsp;投递3.21&nbsp;笔试邀请&nbsp;3.27&nbsp;笔试4.8&nbsp;一面&nbsp;4.10出结果约二面4.12&nbsp;二面&nbsp;4.17出结果约hr面4.18&nbsp;hr面4.19&nbsp;oc🔥🔥一面内容电话面,40mins左右,面试官人不错,会补充我没讲到的点并引导我,中间有段表达有点混乱还提醒我注意分点表达1.项目相关●介绍项目●为什么选择completableFuture?还有什么异步查询的方式?countdownLauch和completableFuture类有什么区别?我提到底层实现原理不一样,面试官补充completableFuture可以有返回结果而countdownLauch没有●项目中怎么用mysql和redis的?2.redisredis的数据结构?●跳表如何实现?与树结构相比有什么优势?查询和删除的时间复杂度是多少?3.mysqlob+树相对于b树的优势?相比于红黑树呢?●聚簇索引与非聚簇索引?4.kafka如何保证消息不会丢失?我讲了生产者ack机制,但是没讲到副本,于是面试官通过下面几个问题逐步引导●主从同步过程中leader挂了,怎么办?●有了解过ISR么?ooffset如何实现?●如何保证消息不会重复消费?5.场景题●从上面offset如何实现的问题展开,问如何使用redis或mysql去保证id不重复?我提了redis用分布式锁,mysql用主键或号段模式继续追问是否可以用redis集合实现?布隆过滤器了解吗,能不能用在这个场景下?了解,但是没回答上来,可能是用布隆过滤器先前置地判断两个id是否重复🔥🔥二面内容视频面,深挖项目,问题没啥参考价值,技术上让我介绍下kafka以及如何运用在项目中的🔥🔥HR面内容●&nbsp;&nbsp;自我介绍●为什么不继续留在上家公司实习?●对部门业务有什么了解?如何胜任这份工作?学习或实习中比较有挑战性的case?●过去二十几年里对你影响比较大的人或事?●手里有什么&nbsp;offer?🔥🔥🔥🔥还未投递的老哥欢迎:👉&nbsp;【淘天内推链接】https://talent.taotian.com/campus/qrcode/home?code=L4PGnjjGYz00uX_Ucjt55w==#25届暑期实习##淘天##暑假实习##面经##内推#
点赞 评论 收藏
转发
6 10 评论
分享
牛客网
牛客企业服务