哪家做网站的公司,定制网络推广计划,wordpress点登录链接重置,网站应该如何进行优化涉及知识点
深度优化(DFS) 记忆化
题目
节点 0 处现有一棵由 n 个节点组成的无向树#xff0c;节点编号从 0 到 n - 1 。给你一个长度为 n - 1 的二维 整数 数组 edges #xff0c;其中 edges[i] [ai, bi] 表示在树上的节点 ai 和 bi 之间存在一条边。另给你一个下标从 0…涉及知识点
深度优化(DFS) 记忆化
题目
节点 0 处现有一棵由 n 个节点组成的无向树节点编号从 0 到 n - 1 。给你一个长度为 n - 1 的二维 整数 数组 edges 其中 edges[i] [ai, bi] 表示在树上的节点 ai 和 bi 之间存在一条边。另给你一个下标从 0 开始、长度为 n 的数组 coins 和一个整数 k 其中 coins[i] 表示节点 i 处的金币数量。 从根节点开始你必须收集所有金币。要想收集节点上的金币必须先收集该节点的祖先节点上的金币。 节点 i 上的金币可以用下述方法之一进行收集 收集所有金币得到共计 coins[i] - k 点积分。如果 coins[i] - k 是负数你将会失去 abs(coins[i] - k) 点积分。 收集所有金币得到共计 floor(coins[i] / 2) 点积分。如果采用这种方法节点 i 子树中所有节点 j 的金币数 coins[j] 将会减少至 floor(coins[j] / 2) 。 返回收集 所有 树节点的金币之后可以获得的最大积分。 参数范围 n coins.length 2 n 105 0 coins[i] 104 edges.length n - 1 0 edges[i][0], edges[i][1] n 0 k 104
分析
时间复杂度
O(节点数量) DFS调用的次数节点数量*2两种方式)*21(分割方式当n无穷大时2和21忽略。
核心原理
当有祖先节点现在方式二时本节点金币会减半。由于最多有10000个金币所以减半15次后就是0所以减半15次以上和减半15次结果一样。比赛时时间紧急所以弄了20次避免考虑边界情况。
变量解释
m_vRet[m_iN];//m_vRet[0] 未减半各节点及子孙节点的分数 m_vRet[i] 减半i次后的最大分数
代码
核心代码
class CNeiBo2 { public: CNeiBo2(int n, bool bDirect, int iBase 0):m_iN(n),m_bDirect(bDirect),m_iBase(iBase) { m_vNeiB.resize(n); } CNeiBo2(int n, vectorvector edges, bool bDirect,int iBase0) :m_iN(n), m_bDirect(bDirect), m_iBase(iBase) { m_vNeiB.resize(n); for (const auto v : edges) { m_vNeiB[v[0]- iBase].emplace_back(v[1]- iBase); if (!bDirect) { m_vNeiB[v[1]- iBase].emplace_back(v[0]- iBase); } } } inline void Add(int iNode1, int iNode2) { iNode1 - m_iBase; iNode2 - m_iBase; m_vNeiB[iNode1].emplace_back(iNode2); if (!m_bDirect) { m_vNeiB[iNode2].emplace_back(iNode1); } } const int m_iN; const bool m_bDirect; const int m_iBase; vectorvector m_vNeiB; };
class Solution { public: int maximumPoints(vectorvector edges, vector coins, int k) { m_iK k; for (int i 0; i m_iN; i) { m_vRet[i].assign(coins.size(),-1); } CNeiBo2 neiBo(coins.size(),edges, false); dfs(0, -1, 0, neiBo, coins); return m_vRet[0][0]; } int dfs(int cur, const int parent, int split,const CNeiBo2 vNeiBo,const vector coins) { if (split 20) { return 0; } int iRet m_vRet[split][cur]; if (-1 ! iRet) { return iRet; } const int curCoin coins[cur] / (1 split); int iType1 curCoin - m_iK; { for (const auto next : vNeiBo.m_vNeiB[cur]) { if (parent next) { continue; } iType1 dfs(next, cur, split, vNeiBo, coins); } } int iType2 curCoin/2; { for (const auto next : vNeiBo.m_vNeiB[cur]) { if (parent next) { continue; } iType2 dfs(next, cur, split1, vNeiBo, coins); } } iRet max(iType1, iType2); return iRet; } int m_iK; static const int m_iN 20; vector m_vRet[m_iN];//m_vRet[0] 未减半各节点及子孙节点的分数 m_vRet[i] 减半i次后的最大分数 };
测试用例
template void Assert(const vector v1, const vector v2) { if (v1.size() ! v2.size()) { assert(false); return; } for (int i 0; i v1.size(); i) { assert(v1[i] v2[i]); } }
template void Assert(const T t1, const T t2) { assert(t1 t2); }
int main() { Solution slu; vectorvector edges; vector coins; int k; int res; edges { {0,1},{1,2},{2,3} }; coins { 10,10,3,3 }; k 5; res slu.maximumPoints(edges, coins,k); Assert(11, res); edges { {0,1},{0,2} }; coins { 8,4,4 }; k 0; res slu.maximumPoints(edges, coins, k); Assert(16, res);
//CConsole::Out(res);}
扩展阅读
视频课程
有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176
相关下载
想高屋建瓴的学习算法请下载《闻缺陷则喜算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653
充满正能量得对大家说闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。墨家名称的来源有所得以墨记之。如果程序是一条龙那算法就是他的是睛
测试环境
操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17
文章转载自: http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.ymwnc.cn.gov.cn.ymwnc.cn http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn http://www.morning.pwhjr.cn.gov.cn.pwhjr.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.xsfny.cn.gov.cn.xsfny.cn http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.pqndg.cn.gov.cn.pqndg.cn http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn http://www.morning.zxqxx.cn.gov.cn.zxqxx.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.xgxbr.cn.gov.cn.xgxbr.cn http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn http://www.morning.alwpc.cn.gov.cn.alwpc.cn http://www.morning.zlgth.cn.gov.cn.zlgth.cn http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.gghhmi.cn.gov.cn.gghhmi.cn http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.djpgc.cn.gov.cn.djpgc.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.lyrgp.cn.gov.cn.lyrgp.cn http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn http://www.morning.wslr.cn.gov.cn.wslr.cn http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn http://www.morning.wsyst.cn.gov.cn.wsyst.cn http://www.morning.txmkx.cn.gov.cn.txmkx.cn http://www.morning.rdlfk.cn.gov.cn.rdlfk.cn http://www.morning.qbtj.cn.gov.cn.qbtj.cn http://www.morning.qgqck.cn.gov.cn.qgqck.cn http://www.morning.ckfyp.cn.gov.cn.ckfyp.cn http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.stflb.cn.gov.cn.stflb.cn http://www.morning.sypzg.cn.gov.cn.sypzg.cn http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.yrdn.cn.gov.cn.yrdn.cn http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.hdrrk.cn.gov.cn.hdrrk.cn http://www.morning.rdtp.cn.gov.cn.rdtp.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.ljxps.cn.gov.cn.ljxps.cn http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn http://www.morning.cwjxg.cn.gov.cn.cwjxg.cn http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn http://www.morning.kghhl.cn.gov.cn.kghhl.cn http://www.morning.lynb.cn.gov.cn.lynb.cn http://www.morning.rttxx.cn.gov.cn.rttxx.cn http://www.morning.aishuxue.com.cn.gov.cn.aishuxue.com.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.nsppc.cn.gov.cn.nsppc.cn http://www.morning.cflxx.cn.gov.cn.cflxx.cn http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn http://www.morning.kxnnh.cn.gov.cn.kxnnh.cn http://www.morning.jhfkr.cn.gov.cn.jhfkr.cn http://www.morning.mwns.cn.gov.cn.mwns.cn http://www.morning.pzjfz.cn.gov.cn.pzjfz.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.kztts.cn.gov.cn.kztts.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn http://www.morning.divocn.com.gov.cn.divocn.com http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn http://www.morning.hlyfn.cn.gov.cn.hlyfn.cn