zoukankan      html  css  js  c++  java
  • 美团笔试

    题目一:

    小明拿到了一个数列a1, a2, ... an,小明想知道存在多少个区间 [l, r] 同时满足下列两个条件:

    1. r - l + 1 = k;
    2. 在al, al+1, ... ar中,存在一个数至少出现了 t 次。

    输出满足条件的区间个数。

    输入:
      输入第一行三个整数n, k, t(1 ≤ n, k, t ≤ 105);

      第二行 n 个整数,a1, a2, ... an(1 ≤ ai ≤ 105)。

    输出:
      输出一个数,问题的答案。

    样例输入
    5 3 2
    3 1 1 1 2
    样例输出
    3

    Hint
    区间[1,3]中1出现了2次,区间[2,4]中1出现了3次,区间[3,5]中1出现了2次。所以一共有3个区间满足条件。

    解题:

    #include <iostream>
    #include <cstring> 
    
    using namespace std;
    
    int arr[100000];
    int temp[100000];
    
    int main()
    {
    	int k, n, t, ans = 0;
    	cin >> n >> k >> t;
    	for(int i = 0; i < n; ++i) {
    		cin >> arr[i];
    	}
    	
    	for(int i = 0; i < n - k + 1; ++i) {
    		// 遍历[l, r]内的每一个数 
    		for(int j = i; j < i + 3; ++j) 
    			++temp[arr[j]];				// 就像桶 
    		
    		for(int m = 0; m < 100000; ++m) {
    			if(temp[m] >= t)
    				ans++;
    		}
    		memset(temp, 0, 100000);
    	}
    	cout << ans << endl;
    }
    

    分析:画图分析得到思路,就可以编码了。

    题目二:

    给定一张包含N个点、N-1条边的无向连通图,节点从1到N编号,每条边的长度为1。

    假设你从1号节点出发并打算遍历所有节点,那么总路程至少是多少?

    输入:

      第一行包含一个整数N,1 ≤ N ≤ 105

      接下来N-1行,每行包含两个整数 X 和 Y ,表示 X 号节点和 Y 号节点之间有一条边,1 ≤ X, Y ≤ N。

    输出:

      总路程的最小值。

    样例输入
    4

    1 2

    1 3

    3 4

    样例输出
    4

    解题:

  • 相关阅读:
    生产环境常见的几种JVM异常
    JVM垃圾回收时如何确定垃圾?是否知道什么是GCRoots?
    你平时工作用过的JVM常用基本配置参数有哪些?
    java X参数
    JUC之CAS
    JUC之List集合
    JUC之lock
    JUC之volatile
    BZOJ2132: 圈地计划
    BZOJ3991: [SDOI2015]寻宝游戏
  • 原文地址:https://www.cnblogs.com/xzxl/p/9601274.html
Copyright © 2011-2022 走看看