牛客编程巅峰赛S2赛季(高级场第2场)考题参考代码(非官方)

牛牛切木棒

class Solution {
public:
    /**
     *
     * @param a long长整型 木棒的长度
     * @return int整型
     */
    int stick(long long a) {
        ull ans = 2;
        ull now = 1, sum = 2;
        ull x = 1, y = 1;
        if(a == 1) {puts("1"); return 0;}
        while(1)
        {
            now = x + y;
            if(now > a - sum ) break;
            now = x + y;
            x = y;
            y = now;
            ans ++;
            sum = sum + now;
        }
        return ans;
        // write code here
    }
};



Tree II

class Solution
{
public:
    typedef long long ll;
    ll n, k, d[100010];
    ll ans = 0;
 
    inline void dfs(ll x)
    {
        for (ll i = -k + 2; i <= 1; ++i)
        {
            if (x * k + i <= n)
            {
                dfs(x * k + i);
                ans += (d[x] ^ d[x * k + i]);
            }
            else
                return;
        }
    }
    long long tree2(int K, vector<int> &a)
    {
        n = a.size();
        k = K;
        for (int i = 0; i < n; ++i)
        {
            d[i + 1] = a[i];
        }
        dfs(1);
        return ans;
    }
};




数据分析

class Solution {
public:
  /**
   * 找到所有长度子数组中最大值的最小值
   * @param numbers int整型vector
   * @return int整型vector
   */
 
  vector<int> getMinimums(vector<int>& numbers) {
    int n = numbers.size();
    vector<int> left(n, -1), right(n, n);
    vector<int> ans(n, numeric_limits<int>::max());
 
    stack<int> s;
    for (int i = 0; i < n; i++) {
      while (!s.empty()) {
        auto t = s.top();
        if (numbers[t] <= numbers[i]) {
          right[t] = i;
          s.pop();
        } else {
          break;
        }
      }
 
      if (!s.empty()) {
        left[i] = s.top();
      }
 
      s.push(i);
    }
 
    for (int i = 0; i < n; i++) {
      int sz = right[i] - left[i] - 1;
      ans[sz - 1] = min(ans[sz - 1], numbers[i]);
    }
 
    for (int i = n - 2; i >= 0; i--) {
      ans[i] = min(ans[i], ans[i + 1]);
    }
 
    return ans;
  }
};


全部评论

相关推荐

Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务