首页 > 其他分享 >题解(2024.7.8贪心)

题解(2024.7.8贪心)

时间:2024-07-08 22:20:41浏览次数:19  
标签:fir 传送 log 2024.7 题解 sum 染色 代价 贪心

1.Teleporters(Hard Version)

  1. 题意:
    有 n+2 个位置:0~n+1,给定n个数\(a_1\)~\(a_n\) ,有以下操作:
  • 向左/右移动一格,代价为 1。
  • 传送回 0 位置或者 n+1 位置,记你当前的位置为 i,则代价为\(a_i\)。每个位置只能发动一次传送。
    求最大传送次数
  1. 思路:
    因为每次传送都会回到0/n+1号点,所以,到达i点并传送的代价为 min{i,n+1-i}+\(a_i\) .
    按照代价升序排序,从小到大取。
    此时发现,第一次传送时,只能从0出发,会导致错误。
    枚举第一个点为\(fir\),代价为 \(fir\)+\(a_fir\) .
    二分答案\(mid\),表示传送\(mid+1\)次,此时总代价为:
  • \(fir<mid\) \(:\) \((\sum_{i=1}^{mid}{min(i,n+1-i)+a_i} ) + fir+a_fir\)
  • \(fir \geq mid\) \(:\) \((\sum_{i=1}^{mid+1}{min(i,n+1-i)+a_i} ) - min(fir,n+1-fir)+a_{fir} + fir+a_{fir}\)
    判断即可
  1. 时间复杂度
    排序: \(O(n log n)\)
    枚举&二分 \(O(n log n)\)
    \(O (n log n)\)

2.给树染色

  1. 题意:
    一颗树有\(n\)个节点,点有点权.现要将这棵树染色,对于任意节点,在被染色之前它的父亲节点必须已经染上了色。
    每次染色的代价为 \(T*A[i]\),其中\(T\)代表当前是第几次染色。
    求把这棵树染色的最小总代价。
  2. 思路:
    将点权最大的点不断与其父节点合并,合并后新点点权为\(\sum_{i=1}^{n}{a_{N_i}}/n\)
    证明合并后新点点权为\(\sum_{i=1}^{n}{a_{N_i}}/n\):
    设有两个已合并点级\(N,M\)。
  • 交换前,染色代价为:
    \(\sum_{i=1}^{n}{a_{N_i}*(T+i)}\) \(+\) \(\sum_{i=1}^{m}{a_{M_i}*(T+n+i)}\)
  • 交换后,染色代价为:
    \(\sum_{i=1}^{n}{a_{N_i}*(T+m+i)}\) \(+\) \(\sum_{i=1}^{m}{a_{M_i}*(T+i)}\)
    差为
    \(\sum_{i=1}^{m}{a_{M_i}}*n - \sum_{i=1}^{n}{a_{N_i}}*m\)
    大于零
    \(\sum_{i=1}^{m}{a_{M_i}}*n > \sum_{i=1}^{n}{a_{N_i}}*m\)
    \(\sum_{i=1}^{m}{a_{M_i}}/m > \sum_{i=1}^{n}{a_{N_i}}/n\)
    故合并后点权为
    \(\sum_{i=1}^{n}{a_{N_i}}/n\)
  1. 时间复杂度
    set维护 \(O(n log n)\)

标签:fir,传送,log,2024.7,题解,sum,染色,代价,贪心
From: https://www.cnblogs.com/grylls2012/p/18290790

相关文章

  • 基础算法训练题单之排序(从入门到入土)——题解
    A.P1177【模板】排序三种方法:快速排序,归并排序,STL库的sort函数。法一、三:https://www.cnblogs.com/expect-999/p/17594345.html法二:https://www.cnblogs.com/expect-999/p/17599008.htmlB.P1923【深基9.例4】求第k小的数模板题目,直接对数组进行升序排序,如果数组从......
  • Codeforces Round 953(Div.2) 题解(A-E)
    CodeforcesRound953(Div.2)题解(A-E)A题意Alice有n本书,第一本书有\(a_1\)页,序号为1,第二本书有\(a_2\)页,序号为2,……,第n本书有\(a_n\)页,序号为n。Alice将把所有书分成两堆,并阅读每一堆中序号最大的一本书。Alice喜欢读书,请你告诉她,她最多可以读多少页的书。Solution第......
  • 题解:洛谷 P1890 gcd区间
    题解:洛谷P1890gcd区间标签:线段树,st表,分块,dp题意给定数列\(a\),有\(m\)次询问求区间\([l,r]\)的最大公约数。思路这道题有多种写法,如标签所示。线段树线段树可以维护具有结合性的操作,很明显\(\gcd\)满足。这道题线段树跑的慢是因为无修改操作,自然没有其他\(O(1)......
  • 题解:洛谷 P2678 [NOIP2015 提高组] 跳石头
    题解:洛谷P2678[NOIP2015提高组]跳石头标签:二分,贪心题意给定一个数列,\(a_0=0,a_{N+1}=L\),从其中删除不超过\(M\)个数,使得\(a_i-a_{i-1}\)的最小值最大。思路从最小值最大不难想到二分答案。统计\(a_i-a_j<mid\)的数量\(k\),如果不满足的话说明不删,\(j\getsi\)。......
  • VSCode中 npm install 安装依赖包太慢了,一直加载不出来问题解决
    1.问题描述采用VSCode打开别人传过来的项目时,需要先加载依赖包,一般是通过终端来加载:终端中输入npminstall. 但是采用npminstall安装依赖包出现问题,一直加载不完,卡到某一地方,如图: 2.尝试解决2.1采用淘宝镜像,依旧慢,最后证书过期2.2采用pnpminstall(做了一部分)npmins......
  • Studying-代码随想录训练营day31| 56.合并区间、738.单调递增的数字、968.监控二叉树
    第31天,贪心最后一节(ง•_•)ง......
  • 贪心
    贪心\(\sf\small\color{gray}Greedy\)基本思想贪心,从字面上去理解:一个人,非常贪心,他不管做出这一步决定后会发生什么,他只管眼前的利益。这就是贪心。当然,这个算法的劣处也显现出来:他不管做出这一步决定后会发生什么。也就是说,如果这一步片面上是最优的,但会影响到后面酿成......
  • 题解:洛谷 P1843 奶牛晒衣服
    题解:洛谷P1843奶牛晒衣服标签:二分,贪心题意给定一个数列,每秒可以将所有数减\(a\),也可以选择一个数减\(b\),二者可同时进行,求让所有数小于等于\(0\)的最小秒数。思路要求最小的秒数,也就是刚好所有数字小于等于\(0\),且尽量大。这个秒数具有单调性,考虑二分答案。二分的......
  • CodeForces CF1980C Sofia and the Lost Operations 题解 但是最后TLE 仅供思路参考
    CodeForcesCF1980CSofiaandtheLostOperations题解嗨嗨,又来了啊,蒟蒻再来一篇题解SofiaandtheLostOperations题面翻译索菲亚有一个包含$n$个整数的数组$a[1],a[2],…,a[n]$。有一天她对这个数组感到厌倦,于是决定顺序地对其应用$m$个修改操作。每个修改操作由一......
  • 洛谷p1449后缀表达式题解
    #include<stdio.h>#include<stdlib.h>#defineMAXSIZE100typedeflongElemType;typedefstruct{ ElemType*base; ElemType*top; intStackSize;}sqStack;voidInitStack(sqStack*s){ s->base=(ElemType*)malloc (MAXSIZE*sizeof(ElemTyp......