123
返回列表 发新帖
楼主: 匿名
跳转到指定楼层
上一主题 下一主题
收起左侧

骨骼虚拟上门

 
🔗
Jess. 2020-10-8 08:33:53 | 只看该作者
全局:
请问第二轮问2是求某个node下面tree的大小吗? 问3的validate和问1有什么区别啊?
回复

使用道具 举报

🔗
fengya 2020-10-27 05:04:04 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies
回复

使用道具 举报

🔗
何曾渡光 2020-10-28 09:11:26 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies

评分

参与人数 1大米 +3 收起 理由
fengya + 3 谢谢!

查看全部评分

回复

使用道具 举报

🔗
lbzlStanford 2020-10-28 13:22:35 | 只看该作者
全局:
第一题原题可以O(k), 但followup里加了multiplier 只能O(k^2)了吧?
回复

使用道具 举报

🔗
Byleth 2020-11-29 05:33:03 | 只看该作者
全局:
有没有好心人能贴一下第一题follow up  dfs + memo的代码?在好多地方都看到这个题但是自己一直没想明白
回复

使用道具 举报

🔗
houghstc 2021-1-9 05:55:38 | 只看该作者
全局:
本帖最后由 houghstc 于 2021-1-9 05:59 编辑

第一题的follow-up
  1.     int n, k;
  2.     vector<int> arr, multiplier;
  3.    
  4.     // dp[l][r] stands for the max result we can get
  5.     // if we take l elements from left, and r elements from right
  6.     vector<vector<int>> dp;
  7.    
  8.     // the max result we can get
  9.     // if we take l elements from left, and r elements from right
  10.     int dfs(int l, int r)
  11.     {
  12.         if(l == 0 && r == 0)
  13.             return 0;
  14.         int &v = dp[l][r];
  15.         if(v > INT_MIN)
  16.             return v;
  17.         // consider the last element we choose
  18.         // if the last element is chosen from left, it should be the (l-1)-th element in arr
  19.         // if the last element is chosen from right, it should be the (n-r)-th element in arr
  20.         // the multiplier will always be (l+r-1)-th element in multipliers
  21.         if(l > 0)
  22.             v = max(v, dfs(l-1, r) + arr[l-1]*multiplier[l+r-1]);
  23.         if(r > 0)
  24.             v = max(v, dfs(l, r-1) + arr[n-r]*multiplier[l+r-1]);
  25.         return v;
  26.     }

  27.     int main() {
  28.         cin >> n >> k;
  29.         arr = vector<int>(n), multiplier = vector<int>(k);
  30.         for(int i = 0; i < n; ++i)
  31.             cin >> arr[i];
  32.         for(int i = 0; i < k; ++i)
  33.             cin >> multiplier[i];

  34.         dp = vector<vector<int>>(k+1, vector<int>(k+1, INT_MIN));

  35.         int res = INT_MIN;
  36.         // we take i elements from left, and k-i elements from right
  37.         for(int i = 0; i <= k; ++i)
  38.         {
  39.             res = max(res, dfs(i, k-i));
  40.         }
  41.         cout << res << endl;
  42.     }
复制代码
[/i][/i]

评分

参与人数 2大米 +4 收起 理由
liwenrui2008 + 3 太厉害了大佬!
ghdwfnh + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
bobbywendy 2021-1-11 06:32:38 | 只看该作者
全局:
houghstc 发表于 2021-1-9 05:55
第一题的follow-up
[mw_shl_code=cpp,true]    int n, k;
    vector arr, multiplier;

厉害了 谢谢大佬
回复

使用道具 举报

🔗
hfpt2020 2021-7-9 03:24:35 | 只看该作者
全局:
我不明白func是用来做什么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表