首页 > 其他分享 >「JOISC 2023 Day4」 Security Guard

「JOISC 2023 Day4」 Security Guard

时间:2023-06-19 23:23:02浏览次数:41  
标签:答案 max Day4 Guard JOISC subtask 两艘 sum

subtask 1

因为 \(1\le s_i\le2\),所以每艘船上都至少有一个保安。令 \(cnt_i\) 表示第 \(i\) 艘船上的保安数,可以先将所有 \(cnt_i+=1\) ,所有 \(s_i-=1\)。经过这一次操作后,如果两艘船之间的小岛的 \(s_i\) 全为 \(0\),表示这两艘船可以相互到达,即可将这两艘船合并成一艘,然后再做一遍上述操作即可。

subtask 2

可以继续按照 subtask 1 的方法求答案,答案就是 \(\sum_{i=2}^{n-1}a[i]+max\{a_i\}\)。

subtask3

按照 subtask1 的方法拓展到树上,答案是 \(\sum_{i=1}^n a_i\times(du_i-1)+max\{a_i\}\)。

subtask4

因为 \(\sum_{i=1}^n a_i\times(du_i-1)+max\{a_i\}=\sum_{i=1}^ma_{u_i}+a_{v_i}-\sum_{i=1}^na_i-max\{a_i\}\),所以每条边的边权可以转换成 \(a_{u_i}+a_{v_i}\),然后找到最小生成树,答案就是最小生成树的权值和,不在最小生成树上的边直接报废即可。

subtask 5&6&7

标签:答案,max,Day4,Guard,JOISC,subtask,两艘,sum
From: https://www.cnblogs.com/nebula-xy/p/17489808.html

相关文章

  • std::thread 二:互斥量(lock_guard())
    *:使用lock_guard后,就不可以使用lock()和unlock()*:lock_guard和智能指针一样,会自动解锁 #include<iostream>#include<thread>#include<mutex>#include<list>usingnamespacestd;classA{public:voidinNum(){for(inti=0;......
  • 算法学习day44动态规划part06-518、377
    packageLeetCode.DPpart06;/***518.零钱兑换II*给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。*请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。*假设每一种面额的硬币有无限个。*题目数......
  • 算法学习day45动态规划part07-322、279
    packageLeetCode.DPpart07;/***322.零钱兑换*给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。*计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。*你可以认为每种硬币的数量是无限的......
  • 算法学习day46动态规划part08-139
    packageLeetCode.DPpart08;importjava.util.HashSet;importjava.util.List;/***139.单词拆分*给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。*注意:不要求字典中出现的单词全部都使用,并且字典中的单词......
  • 算法学习day48动态规划part09-377、213、198
    packageLeetCode.DPpart09;/***377.组合总和Ⅳ*给你一个由不同整数组成的数组nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。*题目数据保证答案符合32位整数范围。*示例:*输入:nums=[1,2,3],target=4*输......
  • 算法学习day42动态规划part04-416
    packageLeetCode.DPpart04;/***416.分割等和子集*给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。*示例:*输入:nums=[1,5,11,5]*输出:true*解释:数组可以分割成[1,5,5]和[11]。**/......
  • 算法学习day43动态规划part05-1049、474、494
    packageLeetCode.DPpart05;/***1049.最后一块石头的重量II*有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。*每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x<=y。那么粉碎的可能结果如下:*如果x=......
  • 利用Ant与Proguard混淆引用的子工程项目jar包及打war包
    当前的web项目有引用到子工程项目,而且多个子工程项目也有引用到其它的工程项目,现要求利用Ant自动将web项目打包成war包,其中引用到的子工程项目需打成jar包,而且必须是混淆后的jar包。其中混淆代码的工具选择了开源的Proguard([url]http://proguard.sourceforge.net/[/url]),可以运行p......
  • 算法学习day41动态规划part03-343、96
    packageLeetCode.DPpart03;/***343.整数拆分*给定一个正整数n,将其拆分为k个正整数的和(k>=2),并使这些整数的乘积最大化。*返回你可以获得的最大乘积。*示例:*输入:n=2*输出:1*解释:2=1+1,1×1=1。**/publicclassIntegerBre......
  • [JOISC 2021 Day3] 保镖 解题报告
    statement给定\(n\)个人,每个人从\(T_i\)秒开始从\(a_i\)移动到\(b_i\),每秒移动一个单位。给定\(q\)个保镖,每个保镖从\(P_i\)秒开始,从\(x_i\)开始移动,每秒一个单位。如果保镖和人在同一个位置上,就可以获得\(C_i\)的奖金,问每个保镖最多能获得多少奖金。analysis考......