首页 > 其他分享 >京东9.14笔试

京东9.14笔试

时间:2024-09-14 17:35:23浏览次数:9  
标签:pox int res 9.14 笔试 pos cin ++ 京东

被美团挂的第二天早上神志不清,第三题写错了距离计算函数,人麻了

第一题

将数组划分成两个区间,要求区间和乘积最小。
经典的前缀和+枚举即完成

#include <bits/stdc++.h>  
using namespace std;  
const int N = 1e6 + 5;  
int h[N];  
int main() {  
    int n;  
    cin >> n;  
    memset(h, 0, sizeof(h));  
    long long sum = 0;  
    for (int i = 1; i <= n; i++) {  
        cin >> h[i];  
        sum += h[i];  
        h[i] += h[i - 1];  
    }  
    long long res = 1e18;  
    for (int i = 1; i < n; i++) {  
        res = min(res, h[i]* (sum - h[i]));  
    }  
    cout << res;  
    return 0;  
}  
// 64 位输出请用 printf("%lld")

第二题

给出长度为26的字符串给所有的字母定优先级,根据优先级对后续n个字符串从小到大进行排序。
字符串的前缀会比当前字符串更小。
直接采用自定义的比较函数进行排序。
不知道为什么该算法出现数组越界,只过70%

#include<bits/stdc++.h>  
using namespace std;  
int main() {  
    string s;  
    cin >> s;  
    unordered_map<char, int>mp;  
    for (int i = 0; i < 26; i++) {  
        mp[s[i]] = i;  
    }  
    int n;  
    cin >> n;  
    vector<string> nums;  
    for (int i = 0; i < n; i++) {  
        string tmp;  
        cin >> tmp;  
        nums.push_back(tmp);  
    }  
    auto cmp = [&](string a, string b) {  
        int pox = 0;  
        int an = a.length();  
        int bn = b.length();  
        if (an == 0 || bn == 0) {  
            return an == 0 ? true:false;  
        }  
        while(pox < an && pox < bn && a[pox] == b[pox]) {  
            pox++;  
        }  
        if (pox == an) {  
            return true;  
        }  
        if (pox == bn) {  
            return false;  
        }  
        return mp[a[pox]] < mp[b[pox]];  
    };  
    sort(nums.begin(), nums.end(), cmp);  
    for (int i = 0; i < n; i++) {  
        cout << nums[i] << endl;  
    }  
    return 0;  
}

第三题

所有的点都以1m/s的速度往其余点扩张,请问所有点连同起来的最少时间是多少。
可以直接使用最小生成树的Kruskal算法生成最小生成树,找到最长的边除2即可。
具体实现是将所有边纳入到优先队列中,每次弹出最小边,如果有一端还没被标记即加入到最小生成树中,对应的时间复杂度为\(O(n^2)\)
笔试中cacu的平方和写成了平方差,过0%,但思路应该没问题

#include <bits/stdc++.h>  
using namespace std;  
int pos[1005][2];  
int h[1005];  
double cacu(int pox1, int pox2) {  
    return sqrt(abs((double)(pos[pox1][0] - pos[pox2][0]) * (pos[pox1][0] - pos[pox2][0])  
                    + (double)(pos[pox1][1] - pos[pox2][1]) * (pos[pox1][1] - pos[pox2][1])));  
}  
struct node{  
    int x, y;  
    node(int a, int b){  
        x =a;  
        y = b;  
    }  
    bool operator<(const node& v) const {  
        return cacu(x, y) > cacu(v.x, v.y);  
    }  
};  
int main() {  
    int n;  
    cin >> n;  
    for (int i = 0; i < n; i++) {  
        cin >> pos[i][0];  
        cin >> pos[i][1];  
        h[i] = 0;  
    }  
    double res = 0;  
    priority_queue<node>pq;  
    for (int i = 0; i < n; i++) {  
        for (int j = i + 1; j < n; j++){  
            pq.push(node(i, j));  
        }  
    }  
    while (!pq.empty()) {  
        node k = pq.top();  
        if (h[k.x] == 0 || h[k.y] == 0) {  
            res = max(res, cacu(k.x, k.y));  
            h[k.x] = 1;  
            h[k.y] = 1;  
        }  
        pq.pop();  
    }  
    int ans = round(res / 2);  
    if (res / 2 > ans) {  
        ans += 1;  
    }  
    cout << ans;  
}  
// 64 位输出请用 printf("%lld")

标签:pox,int,res,9.14,笔试,pos,cin,++,京东
From: https://www.cnblogs.com/tanch25/p/18414420

相关文章

  • 滴滴9.13笔试
    难度不大,第二题的\(O(n)\)带有一点思维第一题滑动窗口板子题:求和不超过m的最大区间长度#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;longlongm;cin>>n>>m;vector<int>nums;for(inti=0;i<n;i++)......
  • 笔试常用api
    常用apiArrayList:List接口publicbooleanadd(Ee):将指定的元素添加到此集合的尾部。publicbooleanaddAll(collection对象):将collection的对象加入到publicEremove(intindex):移除此集合中指定位置上的元素。返回被删除的元素。publicEget(intindex):返回此集......
  • 美团笔试2024秋1
    1、图染色法在编译原理中,寄存器分配是代码优化阶段的一项重要任务。寄存器分配的目标是为了有效地将程序中的活跃变量映射到有限数量的处理器寄存器上。在这个过程中,图染色法是一种常用的技术,它通过构建一个冲突图(其中节点代表活跃变量,边代表不能同时分配到同一寄存器的变量对......
  • 9.14 模拟赛
    A.矩形小C有一个\(n\timesn\)的矩阵,每个格子有一个颜色\(a_{i,j}\len\)。给定\(k\),你需要计算出对于所有格子,以这个格子为左上角的最大正方形,满足内部颜色数量不超过\(k\)。\(n\le500\)。枚举左上角\(i,j\),二分正方形的边长,然后用\(|a|\)的复杂度求这个正......
  • 2024.09.14模拟赛总结
    $T1$似乎是签到题,但是没开$unsigned$$long$$long$挂成$88$分了。直接模拟即可,从后往前考虑,将每个数放到离其最近的位置,不过不会证...#include<bits/stdc++.h>usingnamespacestd;typedefunsignedlonglongLL;constintN=1000010;structwasd......
  • 2024.9.14
    1.如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。2.访问数组中的元素是常数时间操作,或说O(1)操作。一个算法如果能在每个步骤去掉一半数据元素,如二分检索,通常它就取O(logn)时间。用strc......
  • Java笔试面试题AI答之单元测试JUnit(4)
    文章目录19.简述JUnitorg.junit.TestSuite类的作用?1.组织测试类2.简化测试执行3.灵活配置测试环境4.嵌套测试套件注意事项20.在JUnit中@Test注释的作用和用法?作用用法21.简述Junit基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)?22.编写代......
  • 京东h5st4.7.4(9段) 价值1000元?纯算奶妈级教学
    网站:aHR0cHM6Ly93d3cuamQuY29tLw==接口:aHR0cHM6Ly9hcGkubS5qZC5jb20=0.闲聊京东的h5st看着吓人一打开f12就显示本页面由京东-主站前端团队开发维护           --JDC其实过程很明显,经过了6,7个平坦流才可以拿到结果主要细心一点,相信你一定也......
  • 【面试经验】京东 算法工程 广告反作弊 一面 凉经
    一面:HR面+技术面,时长大概1小时多点,HR面15-20分钟HR面:略技术面:c/c++代码片段问题:voidfun(char*p){p=(char*)malloc(100);}intmain(){char*str=NULL;fun(str);strcpy(str,"helloworld");return0;}智能指针相关,和引用的区别C......
  • 【秋招笔试】9.11得物秋招(已改编)-太难了!!!
    ......