360秋招技术岗编程题

T1

import java.util.Scanner;
public class A {
    Scanner scanner = new Scanner(System.in);
    void solve(){
        int n = scanner.nextInt();
        long x=0,y=0;
        long x1 = 1000000000;
        long x2 = -x1;
        long y1 = x1;
        long y2 = x2;
        for(int i=0;i<n;i++){
            x = scanner.nextLong();
            y = scanner.nextLong();
            x1 = Math.min(x1,x);
            x2 = Math.max(x2,x);
            y1 = Math.min(y1,y);
            y2 = Math.max(y2,y);
        }
        long ans = Math.max(Math.abs(x1-x2),Math.abs(y1-y2));
        System.out.println(ans*ans);
    }
    public static void main(String[] args) {
        new A().solve();
    }
}


T2:  暴力前缀和

import java.util.Scanner;
public class B {
    Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        new B().solve();
    }
    private void solve() {
        int n,m;
        n = scanner.nextInt();
        m =scanner.nextInt();
        int dp[][] = new int[n+1][m+1];
        for(int i=1;i<=n;i++){
            int x = scanner.nextInt();
            dp[i][x]++;
            for(int j=1;j<=m;j++)dp[i][j]+=dp[i-1][j];
        }
        int q = scanner.nextInt();
        while(q-->0){
            int l = scanner.nextInt();
            int r = scanner.nextInt();
            int ans = 0;
            for(int i=1;i<=m;i++){
                if(dp[r][i]-dp[l-1][i]>0)ans++;
            }
            System.out.println(ans);
        }
    }
}


T3:  嗯....   样例没模拟出来,,题目没说是否连续还是非连续  非连续感觉答案是4  连续又只能过第一个样例 18%

#秋招#
全部评论
第二题是dp[i][x]++而不是dp[n][x]++吧
点赞 回复 分享
发布于 2018-08-28 01:12
第二题初始值有问题吧
点赞 回复 分享
发布于 2018-08-27 23:44
T3通过代码,不过题目描述似乎有问题,反馈他们说没问题。 #include <iostream> #include <sstream> #include <vector> #include <string> #include <cstring> #include <cmath> #include <algorithm> #include <cstdio> #include <cstdlib> #include <stack> #include <queue> #include <map> using namespace std; #define MAXN 50010 const int INF = 1e9; int idx[MAXN]; int b[MAXN]; int a; int dp[MAXN]; int main() { int n; scanf("%d", &n); for(int i=0; i<n; i++){ scanf("%d", &a); idx[a-1] = i; } for(int i=0; i<n; i++){ scanf("%d", &a); b[i] = idx[a-1]; dp[i] = INF; // 初始化为无限大 } //最长递增子序列 int pos = 0; // 记录dp当前最后一位的下标 dp[0] = b[0]; // dp[0]值显然为a[0] for (int i = 1; i < n; i++) { if (b[i] > dp[pos]) // 若a[i]大于dp数组最大值,则直接添加 dp[++pos] = b[i]; else // 否则找到dp中第一个大于等于a[i]的位置,用a[i]替换之。 dp[lower_bound(dp, dp + pos + 1, b[i]) - dp] = b[i]; // 二分查找 } printf("%d\n", pos+1); return 0; }
点赞 回复 分享
发布于 2018-08-27 21:39
第三题,是否需要考虑i,j的大小
点赞 回复 分享
发布于 2018-08-27 21:29
第三道题将第二个序列翻转一下,应该就和求最长公共子序列一样了。
点赞 回复 分享
发布于 2018-08-27 21:28
第二题c++。输入输出用scanf和printf就过了。呵呵呵
点赞 回复 分享
发布于 2018-08-27 21:27
第三题什么意思有人知道吗
点赞 回复 分享
发布于 2018-08-27 21:23
顶~第一题也是用了int...凉凉
点赞 回复 分享
发布于 2018-08-27 21:22
第二题用C++的话TLE啊。。第三题压根没看懂测试用例 
点赞 回复 分享
发布于 2018-08-27 21:22
第二题C++  57%.......同样的方法Java能过    感觉对C++不太友好啊
点赞 回复 分享
发布于 2018-08-27 21:20
输出2也是18啊
点赞 回复 分享
发布于 2018-08-27 21:20
顶大佬~第一题我用了int,,炸了,36%还找不到错在哪儿,溜了溜了
点赞 回复 分享
发布于 2018-08-27 21:18
第三题有点玄学,看好久都理解不透
点赞 回复 分享
发布于 2018-08-27 21:16

相关推荐

03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
不懂!!!:感觉你的项目描述太简单了,建议使用star描述法优化提炼一下,就是使用什么技术或方案解决了什么问题,有什么效果或成果,例如:对axios进行了二次封装,实现了请求的统一管理、错误的集中处理以及接口调用的简化,显著提高了开发效率和代码维护性,使用canvas技术实现了路线绘制功能,通过定义路径绘制函数和动态更新机制,满足了简化的导航可视化需求,提升了用户体验。像什么是使用其他组件库,基本功能描述就最好不要写到项目成果里面去了,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务