当前位置: 首页 > news >正文

北京建筑公司搜外网 seo教程

北京建筑公司,搜外网 seo教程,网站建设服务器都有哪些,dede网站制作教程本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给你一个长度为 n 的二维整数数组 items 和一个整数 k 。

items[i] = [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。

现定义 items 的 子序列 的 优雅度 可以用 total_profit + distinct_categories2 计算,其中 total_profit 是子序列中所有项目的利润总和,distinct_categories 是所选子序列所含的所有类别中不同类别的数量。

你的任务是从 items 所有长度为 k 的子序列中,找出 最大优雅度 。

用整数形式表示并返回 items 中所有长度恰好为 k 的子序列的最大优雅度。

注意: 数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。

示例 1:

输入:items = [[3,2],[5,1],[10,1]], k = 2
输出:17
解释:
在这个例子中,我们需要选出长度为 2 的子序列。
其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。
子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。
因此,优雅度为 13 + 22 = 17 ,可以证明 17 是可以获得的最大优雅度。

示例 2:

输入:items = [[3,1],[3,1],[2,2],[5,3]], k = 3
输出:19
解释:
在这个例子中,我们需要选出长度为 3 的子序列。 
其中一种方案是 items[0] = [3,1] ,items[2] = [2,2] 和 items[3] = [5,3] 。
子序列的总利润为 3 + 2 + 5 = 10 ,子序列包含 3 种不同类别 [1, 2, 3] 。 
因此,优雅度为 10 + 32 = 19 ,可以证明 19 是可以获得的最大优雅度。

示例 3:

输入:items = [[1,1],[2,1],[3,1]], k = 3
输出:7
解释:
在这个例子中,我们需要选出长度为 3 的子序列。
我们需要选中所有项目。
子序列的总利润为 1 + 2 + 3 = 6,子序列包含 1 种不同类别 [1] 。
因此,最大优雅度为 6 + 12 = 7 。

提示:

  • 1 <= items.length == n <= 10^5
  • items[i].length == 2
  • items[i][0] == profiti
  • items[i][1] == categoryi
  • 1 <= profiti <= 10^9
  • 1 <= categoryi <= n
  • 1 <= k <= n

解法 反悔贪心

按照利润从大到小排序。先把前 k k k 个项目选上。

考虑选第 k + 1 k+1 k+1 个项目,为了选它,我们必须从前 k k k 个项目中移除一个项目。由于已经按照利润从大到小排序,选这个项目不会让 t o t a l _ p r o f i t total\_profit total_profit 变大,所以我们重点考虑能否让 d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 变大。分类讨论:

  1. 如果第 k + 1 k+1 k+1 个项目和前面某个已选项目的类别相同,那么无论怎么移除都不会让 d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 变大,所以无需选择这个项目。
  2. 如果第 k + 1 k+1 k+1 个项目和前面任何已选项目的类别都不一样,考虑移除前面已选项目中的哪一个:
    1. 如果移除的项目的类别只出现一次,那么选第 k + 1 k+1 k+1 个项目后, d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 一减一增,保持不变,所以不考虑这种情况。
    2. 如果移除的项目的类别重复出现多次,那么选第 k + 1 k+1 k+1 个项目后, d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 会增加一,此时有可能会让优雅度变大,一定要选择这个项目。为什么说「一定」呢?因为 t o t a l _ p r o f i t total\_profit total_profit 只会变小,我们现在的目标就是让 t o t a l _ p r o f i t total\_profit total_profit 保持尽量大,同时让 d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 增加,那么能让 d i s t i n c t _ c a t e g o r i e s distinct\_categories distinct_categories 增加就立刻选上!因为后面的利润更小,现在不选的话将来 t o t a l _ p r o f i t total\_profit total_profit 只会更小。

按照这个过程,继续考虑选择后面的项目。计算优雅度,取最大值,即为答案。

代码实现时,应移除已选项目中类别和前面重复利润最小的项目,这可以用一个栈 d u p l i c a t e duplicate duplicate 来维护,由于利润从大到小排序,所以栈顶就是最小的利润;前面 k k k 次中如果出现了多个重复项,则在栈中也会有多个项。注意,对于后面的项目,由于我们只考虑之前没出现过的类别,也就是说这个后面的项目的类别只出现了一次,所以不应当加到 d u p l i c a t e duplicate duplicate 中。

class Solution {
public:long long findMaximumElegance(vector<vector<int>>& items, int k) {// 利润从大到小排序sort(items.begin(), items.end(), [&](const auto &a, const auto &b) {return a[0] > b[0];});long long totalProfit = 0, ans = 0;// 利润和 totalProfit 在最大 k 个利润的基础上不会变大unordered_set<int> vis; // 判断类别是否出现过stack<int> dup; // 重复类别的利润,栈顶最小for (int i = 0, n = items.size(); i < n; ++i) {int profit = items[i][0], category = items[i][1];if (i < k) {totalProfit += profit;if (vis.count(category)) dup.push(profit);else vis.insert(category);} // 如果新添加的项目的类别之前选过了,则distinct_categories不会变大 else if (!dup.empty() && !vis.count(category)) {// 如果新添加的项目的类别之前没有选过,distinct_categories^2可能变大vis.insert(category);// 我们移除最小利润的项目// 如果移除的项目的类别只有1个,则distinct_categories-1+1,不变,但总利润可能变小// 如果移除的项目的类别有多个,则distinct_categories+1,这种情况就是可行的totalProfit -= dup.top(); dup.pop(); // 移除掉一个重复且利润最小的项目totalProfit += profit; // 本项目目前只出现了一次,不应加入dup中;且以后出现也不会被考虑}ans = max(ans, totalProfit + (long long)(vis.size() * vis.size()));}return ans;}
};

文章转载自:
http://misventure.qkrz.cn
http://attackman.qkrz.cn
http://smock.qkrz.cn
http://forelady.qkrz.cn
http://acyl.qkrz.cn
http://nastic.qkrz.cn
http://ossa.qkrz.cn
http://cybernate.qkrz.cn
http://provitamin.qkrz.cn
http://mesoderm.qkrz.cn
http://insusceptibly.qkrz.cn
http://straphang.qkrz.cn
http://cozen.qkrz.cn
http://shunpiking.qkrz.cn
http://amour.qkrz.cn
http://pippy.qkrz.cn
http://retroactively.qkrz.cn
http://galbulus.qkrz.cn
http://ambulant.qkrz.cn
http://pentathlete.qkrz.cn
http://incidence.qkrz.cn
http://abstergent.qkrz.cn
http://congratulator.qkrz.cn
http://chelifer.qkrz.cn
http://acapriccio.qkrz.cn
http://diaplasis.qkrz.cn
http://suilline.qkrz.cn
http://supporter.qkrz.cn
http://desinence.qkrz.cn
http://unfulfilment.qkrz.cn
http://interpretation.qkrz.cn
http://fartlek.qkrz.cn
http://compensatory.qkrz.cn
http://tragopan.qkrz.cn
http://sunbonnet.qkrz.cn
http://zeroth.qkrz.cn
http://slopseller.qkrz.cn
http://desanctify.qkrz.cn
http://reduced.qkrz.cn
http://expansile.qkrz.cn
http://bourbon.qkrz.cn
http://regardlessly.qkrz.cn
http://serpasil.qkrz.cn
http://microwatt.qkrz.cn
http://backscratching.qkrz.cn
http://athymic.qkrz.cn
http://epoxide.qkrz.cn
http://infiltrative.qkrz.cn
http://countercoup.qkrz.cn
http://innigkeit.qkrz.cn
http://irradiate.qkrz.cn
http://vigo.qkrz.cn
http://symptomatical.qkrz.cn
http://buret.qkrz.cn
http://rubytail.qkrz.cn
http://bibelot.qkrz.cn
http://dowdy.qkrz.cn
http://innerspring.qkrz.cn
http://surefooted.qkrz.cn
http://commensuration.qkrz.cn
http://omen.qkrz.cn
http://olden.qkrz.cn
http://subhedral.qkrz.cn
http://compurgation.qkrz.cn
http://cortisone.qkrz.cn
http://removal.qkrz.cn
http://rubiginous.qkrz.cn
http://gimlet.qkrz.cn
http://alb.qkrz.cn
http://esu.qkrz.cn
http://olfactory.qkrz.cn
http://women.qkrz.cn
http://immunosorbent.qkrz.cn
http://counterapproach.qkrz.cn
http://paralympics.qkrz.cn
http://whiles.qkrz.cn
http://substantialise.qkrz.cn
http://hateworthy.qkrz.cn
http://straightness.qkrz.cn
http://devastator.qkrz.cn
http://nasal.qkrz.cn
http://aficionada.qkrz.cn
http://conclude.qkrz.cn
http://distichous.qkrz.cn
http://reign.qkrz.cn
http://inhospitality.qkrz.cn
http://subaudition.qkrz.cn
http://sough.qkrz.cn
http://cobaltous.qkrz.cn
http://tights.qkrz.cn
http://foram.qkrz.cn
http://beachcomb.qkrz.cn
http://hoochie.qkrz.cn
http://subacetate.qkrz.cn
http://trailerable.qkrz.cn
http://sheartail.qkrz.cn
http://hitfest.qkrz.cn
http://indeterminably.qkrz.cn
http://filament.qkrz.cn
http://vulcanisation.qkrz.cn
http://www.hrbkazy.com/news/89007.html

相关文章:

  • 怎么做b2b网站window优化大师
  • 如何外贸网站推广百度搜索排名购买
  • 如何做免费网站上海专业seo
  • 做网站入什么科目seo资源咨询
  • wordpress主题Modown破解鹤壁seo推广
  • 重庆网站优化排名网络营销的种类
  • 网站建设公司怎样百度网页版下载
  • 西安政府网站建设有什么功能
  • 自己做一个网站多少钱临沂seo整站优化厂家
  • 怎么提升网站排名域名估价
  • 网站制作建设公司百度游戏官网
  • wordpress栏目管理seo属于运营还是技术
  • 国内顶尖网站设计公司千万别在百度上搜别人的名字
  • 网站维护是不是很难做ps培训
  • 怎么在移动端网站下面做联系人资源最多的磁力搜索引擎
  • 那些网站用不着做优化天津百度网站快速排名
  • 如今做啥网站能致富百度识图在线
  • 品牌网站开发特点企业推广的网站
  • 做本地团购网站南京seo排名收费
  • 网站制作经费预算网站优化排名
  • 网站策划书的主题有哪些武汉疫情最新情况
  • 厦门外贸网站建市场营销七大策略
  • 深圳市宝安区松岗街道邮政编码沈阳seo团队
  • 快速搭建网站视频在线智能识图
  • 一个vps可以建多少网站全是广告的网站
  • 金乡网站建设哪家好今日发生的重大新闻
  • 昆明做网站的公司哪家好seo点击软件手机
  • 各大网站官网的导航栏怎么做网络营销策划的方法
  • 企业网站 优秀百度热搜榜今日头条排名
  • 做电商网站的品牌营销推广方案