首页 > 其他分享 >leetcode2836 在传球游戏中最大化函数值

leetcode2836 在传球游戏中最大化函数值

时间:2024-12-05 20:32:36浏览次数:7  
标签:最大化 传球 int long 玩家 leetcode2836 std vector

n名玩家在玩传球游戏,编号为i的玩家固定会把球传给编号为r[i]的玩家,任选一名玩家开始传球,恰好传k次,得分为这k次传球内所有接触过球的玩家的编号之和,如果玩家多次触球,则累加多次。问从哪个玩家开始传,能获得最大总得分,求最大得分。
1<=n<=1E5; 0<=r[i]<n; 1<=k<=1E10

分析:与倍增法求lca类似,记f[i][j]表示从玩家i开始传2^j次后到达的玩家编号,w[i][j]表示对应的得分(不含最后接球玩家)。

using i64 = long long;
class Solution {
public:
    long long getMaxFunctionValue(vector<int>& r, long long k) {
        int n = r.size();
        std::vector<std::vector<int>> f(n, std::vector<int>(35, 0));
        std::vector<std::vector<i64>> w(n, std::vector<i64>(35, 0));
        for (int i = 0; i < n; i++) {
            f[i][0] = r[i];
            w[i][0] = i;
        }
        for (int j = 1; j < 35; j++) {
            for (int i = 0; i < n; i++) {
                f[i][j] = f[f[i][j - 1]][j - 1];
                w[i][j] = w[i][j - 1] + w[f[i][j - 1]][j - 1];
            }
        }
        i64 ans = 0;
        for (int i = 0; i < n; i++) {
            i64 cur = 0;
            int x = i;
            for (int t = 34; t >= 0; t--) {
                if ((1LL << t) & k) {
                    cur += w[x][t];
                    x = f[x][t];
                }
            }
            ans = std::max(ans, cur + x);
        }
        return ans;
    }
};

标签:最大化,传球,int,long,玩家,leetcode2836,std,vector
From: https://www.cnblogs.com/chenfy27/p/18589368

相关文章

  • TikTok个人号和企业号矩阵,如何最大化运营?
    您知道TikTok这两种帐户类型之间的区别吗?在此文中,我们将比较TikTok个人帐户和企业帐户,并研究每种帐户类型的优缺点。无论您是TikTok创作者、影响者还是企业主,这篇博文将给你分析,哪种账号类型更值得你运营。一、什么是TikTok个人帐号?个人帐户是TikTok上的默认帐户类......
  • Pangle出海指南:如何实现ROI最大化?
    Pangle作为TikTok for Business旗下的程序化移动广告平台,为全球移动应用开发者和广告主提供广告变现与用户增长的全面解决方案。以下是一些关键策略,帮助您在Pangle平台上实现ROI最大化。一、Pangle的优势以下是Pangle拥有的五个核心优势:1.充沛的广告资源:Pangle拥有独家......
  • Pangle出海指南:如何实现ROI最大化?
    Pangle作为TikTok for Business旗下的程序化移动广告平台,为全球移动应用开发者和广告主提供广告变现与用户增长的全面解决方案。以下是一些关键策略,帮助您在Pangle平台上实现ROI最大化。一、Pangle的优势以下是Pangle拥有的五个核心优势:1.充沛的广告资源:Pangle拥有独家......
  • 用js实现最大化和最小化窗口
    //最大化窗口functionmaximizeWindow(){if(window.innerWidth<screen.availWidth||window.innerHeight<screen.availHeight){if(document.documentElement.requestFullscreen){document.documentElement.requestFullscreen();}elseif(d......
  • 代码随想录算法训练营第二十八天| leetcode122.买卖股票的最佳时机 II、leetcode55.
    1leetcode122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II-力扣(LeetCode)文章链接:代码随想录视频链接:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II_哔哩哔哩_bilibili思路:自己不知道怎么写出来的一道题目,就觉得理解上面就是找到了方法,但是后面再......
  • 社群团购创新模式探究:融合多元策略与新兴技术实现商业价值最大化
    摘要:本文聚焦社群团购这一商业模式,深入剖析其并非传统认知的固定模式,而是融合多元要素的动态商业架构。在阐述社群团购因生活节奏加快而迎来机遇的基础上,着重探讨信任构建在用户获取与留存中的关键作用。通过引入“开源AI智能名片2+1链动模式S2B2C商城小程序源码”这一......
  • Kafka集群管理:大数据运维专家来教你如何实现数据均衡与性能最大化
    Kafka概述Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。 目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使......
  • vxe-modal 实现窗口最大化与最小化
    vxe-modal实现窗口最大化与最小化官网:https://vxeui.com<template><div><vxe-buttoncontent="点击弹出"@click="openEvent"></vxe-button></div></template><script>import{VxeUI}from'vxe-pc-......
  • 大数据传播模型与算法——影响力最大化
    【大数据网络传播模型和算法-陈卫】——影响力最大化【持续更新】本人当前研究方向为影响力最大化(基于机器学习的组合优化算法)。目前在学习陈卫编著的《大数据传播模型与算法》,该系列会定期分享影响力最大化的学习内容(持续更新…),希望大家能够一起交流学习!前言什么是影响?......
  • 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游
    122.买卖股票的最佳时机II给定一个数组,它的第 i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入:[7,1,5......