美团算法笔试8.29

第一题:AC100%(丁香花)
import sys
n = int(sys.stdin.readline().strip(' ').strip('\n').strip(' '))
arr = list(map(int,sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' ')))
record = {}
res =0
for i in range(len(arr)):
    if arr[i] not in record:
        record[arr[i]]=0
    record[arr[i]] +=1
    for key in record:
        if key< arr[i]:
            res+= 1
print(res)

第二题:AC100%(放书)
import sys
from bisect import bisect_right,bisect_left
n = int(sys.stdin.readline().strip(' ').strip('\n').strip(' '))
arra = list(map(int,sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' ')))
arrb = list(map(int,sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' ')))

arra = sorted(arra,reverse=True)
arrb = sorted(arrb)
mode = int(1e9+7)
res = 1
for i in range(n):
    flag = arra[i]
    idx = bisect_left(arrb,flag)
    tres = n-idx -i
    if tres<=0:
        res = 0
        break
    res = (res*tres)%mode
print(res)



第三题:AC100%(字符串)
import sys
s = sys.stdin.readline().strip(' ').strip('\n').strip(' ')
a = sys.stdin.readline().strip(' ').strip('\n').strip(' ')

records = []
record = {}
for i in range(len(s)-1,-1,-1):
    record[s[i]] = i
    records.append(record.copy())
records = records[::-1]

flag = False
for c in a:
    if c not in record:
        flag= True
        break

if flag:
    print(-1)
else:
    res = 0
    n = len(s)
    idx = 0
    i= 0
    while i<len(a):
        c = a[i]
        if idx>=n :
            idx = 0
            continue
        trecord = records[idx]
        if c not in trecord:
            res += (n- idx)
            idx = 0
            continue
        next_idx = trecord[c]
        res += (next_idx-idx)
        idx = next_idx+1
        i+=1
    print(res)
第四题:AC36%(割草)
这一题我觉得需要用到二维差分数组,但是不管怎么样在n和m都是1e5的时候感觉都不好处理。
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
#include <queue>
using namespace std;

const int maxn = 1005,maxm = 1005;
int book[maxn][maxm];

int main() {
    int n,m,k,res=0;
    cin>>n>>m>>k;
    int x,y,r;
    for (int i = 1; i <n+1 ; ++i) {
        for (int j = 1; j <m+1 ; ++j) {
            book[i][j] =1;
        }
    }
//    vector<vector<int> >book(n+1, vector<int>(m+1,1));
    for (int tt = 0; tt < k; ++tt) {
        cin>>x>>y>>r;
        for (int i = 1; i <n+1 ; ++i) {
            for (int j = 1; j <m+1 ; ++j) {
                if ((i-x)*(i-x)+(j-y)*(j-y)<= r*r){
                    book[i][j] =0;
                }
            }
        }
        if (tt!=k-1){
            for (int i = 1; i <n+1 ; ++i) {
                for (int j = 1; j <m+1 ; ++j) {

                    book[i][j] +=1;

                }
            }
        }
    }
    for (int i = 1; i <n+1 ; ++i) {
        for (int j = 1; j <m+1 ; ++j) {
            res+=book[i][j];

        }
    }
    cout<<res;
    return 0;
}




#美团笔试##笔经##美团#
全部评论
我靠太牛了吧铁子
1 回复 分享
发布于 2021-08-29 12:45
好家伙,第一题写法一样用java 54%,python能A
点赞 回复 分享
发布于 2021-08-29 14:32
这不得给个SSP
点赞 回复 分享
发布于 2021-08-29 19:46
第三题trecord存储的是[idx, n-1]之间,从右到左字符最后出现的位置?
点赞 回复 分享
发布于 2021-08-29 21:21

相关推荐

西南山:哥,你的技能是在报菜单吗
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
评论
8
47
分享
正在热议
# 25届秋招总结 #
442405次浏览 4511人参与
# 春招别灰心,我们一人来一句鼓励 #
41942次浏览 531人参与
# 北方华创开奖 #
107431次浏览 599人参与
# 地方国企笔面经互助 #
7962次浏览 18人参与
# 同bg的你秋招战况如何? #
76670次浏览 561人参与
# 虾皮求职进展汇总 #
115613次浏览 886人参与
# 阿里云管培生offer #
120237次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454658次浏览 34857人参与
# 实习必须要去大厂吗? #
55771次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149901次浏览 1977人参与
# 投递实习岗位前的准备 #
1195935次浏览 18548人参与
# 你投递的公司有几家约面了? #
33205次浏览 188人参与
# 双非本科求职如何逆袭 #
662208次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4753次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157628次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11561次浏览 287人参与
# 发工资后,你做的第一件事是什么 #
12704次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35804次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20126次浏览 240人参与
# 我的上岸简历长这样 #
452016次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39299次浏览 314人参与
# 非技术岗是怎么找实习的 #
155868次浏览 2120人参与
牛客网
牛客企业服务