广联达0916笔试

做完出来,刷牛客,发现3道编程都是广联达之前笔试的原题。。。
第一道长草ac
第二道元素91%,超时
第三道范围攻击81%,有错误,想知道第三道哪里没考虑到,求指点
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int y = sc.nextInt();
        TreeMap<Integer,Integer> map = new TreeMap<>();
        for (int i = 0; i < n; i++) {
            int x = sc.nextInt();
            int hp = sc.nextInt();
            map.put(x,hp);
        }
        int count = 0;
        for (int item:map.keySet()) {
            int x =map.get(item);
            if (x>0){
                for (int other:map.keySet()) {
                    if (other<=item+2*y){
                        map.put(other,map.get(other)-x);
                    }
                }
                count+=x;
            }

        }
        System.out.println(count);
    }

}


#笔试题目##广联达#
全部评论
lz这个解法确实有点点毛病 可以使用滑动窗口做,AC,时间复杂度O(n) 我用C++写的,可以看下 #include<bits/stdc++.h> using namespace std; struct master{ int pos; int hp; master(int _pos,int _hp){ pos=_pos; hp=_hp; } }; bool cmp(master a,master b){ return a.pos<b.pos; } vector<master>v; int main() { int n,y; cin>>n>>y; for(int i=0;i<n;i++){ int x,h; cin>>x>>h; v.push_back(master(x,h)); } sort(v.begin(),v.end(),cmp); int size=2*y; int l=0; int r=0; int ans=0;  while(l<n){ while(r+1<n && v[r+1].pos-v[l].pos <= size)  r++; ans+=v[l].hp; for(int i=r;i>=l;i--) v[i].hp-=v[l].hp; while(l<n && v[l].hp<=0)  l++;  } cout<<ans; return 0; }
1
送花
回复
分享
发布于 2020-09-17 14:43
第一题AC,第二题18%,第三题91%
点赞
送花
回复
分享
发布于 2020-09-16 20:30
网易互娱
校招火热招聘中
官网直投
第二题有代码吗
点赞
送花
回复
分享
发布于 2020-09-16 20:38
不要在考试没结束的时候贴代码。。。万一被查重呢?
点赞
送花
回复
分享
发布于 2020-09-16 20:45
楼主能发下代码吗
点赞
送花
回复
分享
发布于 2020-09-16 21:07
有朋友能分享后两道 AC 的代码吗?
点赞
送花
回复
分享
发布于 2020-09-16 21:11
跪求楼主发代码
点赞
送花
回复
分享
发布于 2020-09-16 21:12
第三题说个思路吧 不知道怎么下手
点赞
送花
回复
分享
发布于 2020-09-16 21:22
广联达还招人吗?提前批笔试过了待面试,一直到现在还是待面试,一个半月了......
点赞
送花
回复
分享
发布于 2020-09-16 21:36
有人还记得第二题的题目吗?
点赞
送花
回复
分享
发布于 2020-09-16 21:50
能看下代码吗?赛码网怎么测试的
点赞
送花
回复
分享
发布于 2020-09-16 21:53
第二题手动模拟所有情况, AC import java.util.*; public class Main {     数组排序然后func,超字数了略过     public static long func(long[] elements) {         long left = (2 * elements[2] - elements[1] - elements[0]);         long right = elements[3] - elements[2];         long ans;         if (elements[2] == 0 && elements[3] < 7 || elements[1] == 0 && elements[3] + elements[2] < 6) {             return -1;         }         if (left * 2 <= right) {             elements[3] -= left * 2;             ans = elements[2] + (elements[3] - elements[2]) / 7;         } else {             left = (elements[1] - elements[0]);             right = elements[3] + elements[2] - 2 * elements[1];             if (left * 2 <= right) {                 ans = elements[1] + (right - 2 * left) / 6;             } else {                 left = 0;                 right = elements[3] + elements[2] + elements[1] - 3 * elements[0];                 ans = elements[0] + right / 5;             }         }         return ans * 4;     } }
点赞
送花
回复
分享
发布于 2020-09-16 23:01
早知道晚点再做了😆
点赞
送花
回复
分享
发布于 2020-09-16 23:30
能贴一下第一题java代码吗 谢谢
点赞
送花
回复
分享
发布于 2020-09-17 17:29
收到面试通知了吗
点赞
送花
回复
分享
发布于 2020-09-25 17:13

相关推荐

3 16 评论
分享
牛客网
牛客企业服务