贪心
文章平均质量分 63
1
zzqwtc
blog dot zzqwtc dot com
展开
-
AcWIng 734. 能量石(贪心 + 01背包)
能量石题意岩石怪物杜达生活在魔法森林中,他在午餐时收集了 N 块能量石准备开吃。由于他的嘴很小,所以一次只能吃一块能量石。能量石很硬,吃完需要花不少时间。吃完第 i 块能量石需要花费的时间为 Si 秒。杜达靠吃能量石来获取能量。不同的能量石包含的能量可能不同。此外,能量石会随着时间流逝逐渐失去能量。第 i 块能量石最初包含 Ei 单位的能量,并且每秒将失去 Li 单位的能量。当杜达开始吃一块能量石时,他就会立即获得该能量石所含的全部能量(无论实际吃完该石头需要多少时间)。能量石中包含.原创 2021-04-25 22:48:05 · 3353 阅读 · 0 评论 -
Educational Codeforces Round 107 (Rated for Div. 2) D - Min Cost String
D. Min Cost String题意字符串的代价定义为 对于一对索引i,j(1≤i<∣s∣)i,j (1 \leq i < |s|)i,j(1≤i<∣s∣) $s_i = s_j $ 并且 si+1=sj+1s_{i + 1} = s_{j + 1}si+1=sj+1 满足条件的不同i,ji,ji,j 的数量让你用前 kkk 个字母构造一个长度为 nnn 的字符串 并且使得 字符串的代价最小思路贪心地考虑 我们每次为当前字母 xxx 选择下一个字母 yyy 的时候 找到原创 2021-04-13 22:19:21 · 3376 阅读 · 0 评论 -
CodeForces Round #713 (Div. 3) F - Education (贪心)
F - Education题意有一个人 为了存够 ccc 元 每一天有两种操作可以选择在当前职位工作一天并拿到 a[i]a[i]a[i] 元钱如果当前存款多于 b[i]b[i]b[i] 可以升职到下一个职位(下一个职位的日工资更高)a[i]a[i]a[i] 和 b[i]b[i]b[i] 都是递增数组问:至少要多少天才能存够 ccc 元思路因为 a[i]a[i]a[i] 是递增的 所以如果要升职就要尽早升职遍历 a[i]a[i]a[i] 计算出当前工资下需要多少天 取最小值 存在 min原创 2021-04-11 21:22:21 · 3374 阅读 · 0 评论 -
AcWing 1010. 拦截导弹 (LIS + 贪心)
1010. 拦截导弹题意某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。思路第一小问是裸的最长上升原创 2021-03-15 20:43:01 · 3326 阅读 · 0 评论 -
CodeForces - 1481C - Fence Painting (贪心)
Fence Painting题意按顺序使用 ccc 数组中的元素 将 aaa 数组 变成 bbb 数组 问是否可能,若可能 输出 ccc 中每个元素应该放在 aaa 中的哪个位置思路先找到哪些元素需要修改 存在 qqq 里对于 ccc 中最后一个元素 c[m]c[m]c[m] 有以下三种情况 1.需要修改的数中有 c[m]c[m]c[m] 2.需要修改的数中没有 c[m]c[m]c[m] 但是不需要修改的数中有 c[m]c[m]c[m] 3.bbb 中没有 c[m]c[m]c[m]用原创 2021-03-14 13:06:43 · 3484 阅读 · 0 评论 -
CodeForces - 1394A - Boboniu Chats with Du (贪心 + 枚举)
Boboniu Chats with Du题意nnn 个快乐因子有两种, 一种大于 mmm ,一种小于等于 mmm ,某一天选了第一种时 ,接下来的 ddd 天(不包括选的这一天) 都会被禁言,不能累加别的快乐因子。若选择了第二种则没有影响 ,问怎样选择才能使 nnn 天的快乐因子和最大思路枚举选多少个第一种快乐因子即可 首先若选第一种快乐因子肯定选大的,因为选了后同样都是禁言 ddd 天,第二种快乐因子也类似 能选就选大的,所以先将两种按降序排序,然后枚举选多少次第一种快乐因子,将 resresr原创 2021-02-27 23:20:59 · 3243 阅读 · 3 评论 -
CodeForces - 1400B - RPG Protagonist (贪心)
RPG Protagonist题意一个人和他的追随者 分别可以携带重量为 ppp fff 的物体每把剑重 sss 每个战斧重 www 有 cntscnt_scnts 把剑 cntwcnt_wcntw 把战斧问 两个人最多能带走多少件武器思路首先我们可以知道,有可能不能使得重量恰好为 ppp 和 fff 所以会有浪费 那么浪费多少呢?不容易求解,但是,剑和战斧的数量只有 2e52e52e5,还可以知道优先拿重量小的可以多拿,所以我们可以贪心的枚举 ppp 会拿多少把质量较小的武器(比如是剑)原创 2021-02-24 23:36:22 · 3379 阅读 · 0 评论 -
CodeForces - 1401D - Maximum Distributed Tree (贪心 + 树上dfs)
Maximum Distributed Tree题意为一棵树的边添加权值 要求如下权值大于 000所有边权值之积等于 kkk边权值中 111 的个数尽可能少kkk 以质因数分解的形式给出求∑i=1n−1∑j=i+1nf(i,j)\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^n f(i,j)i=1∑n−1j=i+1∑nf(i,j)的值最大是多少 其中 f(u,v)f(u,v)f(u,v) 表示从 uuu 到 vvv 的简单路径上边的权值之和思路原创 2021-02-24 23:15:09 · 3231 阅读 · 0 评论 -
CodeForces - 1430E - String Reversal (贪心 + 树状数组求逆序数)
String Reversal题意对于一个字符串 每次可以交换相邻的两个字符 问 最少经过多少次操作后能将原来的字符串倒序思路对于样例 aaaza 倒序后应该是 azaaa 从最后一个字符开始看 需要有一个 aaa 移到最后面,因为源字符串中有多个 aaa 显然 把下标最大的 aaa 移到最后花费的操作次数最小操作前下标 123451234512345 操作后下标 142351423514235 逆序数恰好为 222 所以大胆假设 不用求证(不是) 本题即为按照上面规得到新的下标然后求逆序数即可原创 2021-02-19 23:29:01 · 3250 阅读 · 0 评论 -
CodeForces - 1430D - String Deletion (贪心 + 双指针)
String Deletion题意每次你可以从这个 010101 字符串中删除一个字符 ,然后如果字符串不为空,系统则删除由相同字符组成的最大长度前缀 问最大操作数是多少思路有两种情况当前字符串由相同字符组成的前缀长度大于1 那么肯定选择删除前缀中的一个字符比较好 因为如果选择删除后面的字符 那么前缀接下来肯定也要被系统删除如果当前字符串由相同字符组成的前缀长度为1,那么就往后找是否存在连续的串,如果有的话就删除串中的一个字符,因为这样的话一个字符相同的串,可以被分为几次删除,否则当其为原创 2021-02-19 21:25:40 · 3122 阅读 · 0 评论 -
CodeForces - 1467B - Hills And Valleys (贪心)
Hills And Valleys题意修改数列中的 一个 数字 使得峰(波峰、波谷)的数量最少思路首先我们通过手写几个例子可以知道 修改一个数只能影响到左右两个数 所以能减少的峰的数量为 1、2、3 三种情况其次 若将这个数修改成 两边两个数构成的范围之外 那么不会改变峰的数量 所以第 iii 个数的改变范围为 [ai−1,ai+1][a_{i-1},a_{i+1}][ai−1,ai+1] 可以贪心地将其改成左边的数计算出能减少多少个峰 再将其变成右边的数 计算出能减少多少个峰 结果取 max原创 2021-02-14 22:14:57 · 3177 阅读 · 0 评论 -
CodeForces - 1468D - Firecrackers (贪心)
Firecrackers题意一个囚犯和一个守卫 在一维坐标上移动,每一秒按顺序发生以下三件事囚犯向左或向右移动一步 或者呆在原地, 如果囚犯呆在原地, 那么它可以在所处的位置放下一个鞭炮一些鞭炮可能会爆炸 对于第 iii 个 鞭炮 会在被放置后的 sis_isi 秒爆炸守卫会朝囚犯的方向前进一步问:在囚犯被守卫捉住前 最多能爆炸多少鞭炮思路首先要知道 一个格子可以同时存在多个鞭炮… 一开始没注意到这一点死活解不出来其次 先放鞭炮再跑 和先跑再放鞭炮,肯定是前者更优,因为原创 2021-02-13 20:02:24 · 3238 阅读 · 0 评论 -
CodeForces - 1469C - Building a Fence (思维)
Building a Fence题意用 nnn 个宽度为 111 高度为 kkk 的木板构建一段栅栏 第 iii 个木板下面的地面高度等于 hih_ihi 第一个和最后一个木板必须在地面上 其他的木板 底端 可能位于地面或者不高于地面 k−1k - 1k−1的高度上 相邻的两个木板必须有公共边 也即有重合的部分 问有没有可能建造一个符合所有规则的围栏思路设 lll rrr 分别为当前栅栏下端的最小高度和最大高度 因为每段栅栏高度都为 kkk 可知 下一段栅栏底边高度的范围为 [l−k+1,r+k原创 2021-01-30 16:32:12 · 3225 阅读 · 0 评论 -
Educational Codeforces Round 103 C - Longest Simple Cycle (思维 + 贪心)
Longest Simple Cycle题意有 nnn 条链,第 iii 条链上有 c[i]c[i]c[i] 个点,a[i]a[i]a[i] 为第 iii 条链的顶点与第 i−1i-1i−1 条链的连接点,b[i]b[i]b[i] 为第i条链的最后一个点与第 i−1i-1i−1 条链的连接点。找这样的一个环,环上的每个点都只被访问一次,问该环的最大长度为多少。思路反向遍历 c[i]c[i]c[i]设 res1res1res1 和 res2res2res2res1res1res1 表示 每条链原创 2021-01-30 14:39:53 · 2923 阅读 · 0 评论 -
CodeForces - 1465D.Grime Zoo (贪心+思维)
Grime Zoo题意给出一个包含 0 1 ?0 \ 1 \ ?0 1 ? 的序列 每个子序列 010101会增加xxx点愤怒值,每个子序列101010会增加yyy点愤怒值用 0 10 \ 10 1代替所有的 ??? 使得最终的愤怒值最小思路先用 111 代替所有的 ??? 求出每个位置前缀和后缀中 1 0 ?1 \ 0 \ ?1 0 ? 的数量 计算得到当前愤怒值 $re如果 x<yx原创 2021-01-29 13:50:48 · 3031 阅读 · 0 评论 -
AcWing 125. 耍杂技的牛 (推公式)
AcWing 125. 耍杂技的牛农民约翰的N头奶牛(编号为1..N1..N1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量wiw_{i}wi以及自己的强壮程度sis_{i}si一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,原创 2021-01-27 02:02:13 · 3081 阅读 · 0 评论 -
AcWing 104. 货仓选址 (绝对值不等式)
AcWing 104. 货仓选址在一条数轴上有 NNN 家商店,它们的坐标分别为 Ai−ANA_{i}-A_{N}Ai−AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数NNN.第二行NNN个整数Ai−ANA_{i}-A_{N}Ai−AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤1000001 \leq N \leq 1000001≤N≤1原创 2021-01-27 02:01:01 · 2795 阅读 · 0 评论 -
AcWing 913. 排队打水 (排序不等式)
AcWing 913. 排队打水有 nnn 个人排队到 111 个水龙头处打水,第 iii 个人装满水桶所需的时间是 tit_{i}ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?输入格式第一行包含整数 nnn。第二行包含 nnn 个整数,其中第 iii 个整数表示第 iii 个人装满水桶所花费的时间 tit_{i}ti输出格式输出一个整数,表示最小的等待时间之和。数据范围1≤n≤1051 \leq n \leq 10^{5}1≤n≤1051≤ti≤1041 \leq原创 2021-01-27 01:59:34 · 2846 阅读 · 0 评论 -
AcWing 907. 区间覆盖 (区间贪心)
AcWing 907. 区间覆盖给定NNN个闭区间[ai,bi][ai,bi][ai,bi]以及一个线段区间[s,t][s,t][s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出−1-1−1。输入格式第一行包含两个整数sss和ttt,表示给定线段区间的两个端点。第二行包含整数NNN,表示给定区间数。接下来N行,每行包含两个整数ai,biai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。原创 2021-01-27 01:58:07 · 2943 阅读 · 0 评论 -
AcWing 906. 区间分组 (区间贪心问题)
AcWing 906. 区间分组给定NNN个闭区间[ai,bi][ai,bi][ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数NNN,表示区间数。接下来N行,每行包含两个整数ai,biai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤1051 \leq N \leq 10^{5}1≤N≤105−109≤ai≤bi≤109-10^{9} \leq原创 2021-01-27 01:29:54 · 2872 阅读 · 0 评论 -
AcWing 908. 最大不相交区间数量 (区间贪心问题)
AcWing 908. 最大不相交区间数量给定NNN个闭区间[ai,bi][ai,bi][ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来NNN行,每行包含两个整数ai,biai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤1051 \leq N \leq 10^{5}1≤N≤105−109≤ai≤bi≤109-10^{9} \原创 2021-01-27 01:28:29 · 2749 阅读 · 0 评论 -
AcWing 905. 区间选点 (区间贪心问题)
AcWing 905. 区间选点给定NNN个闭区间[ai,bi][ai,bi][ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来NNN行,每行包含两个整数ai,biai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤1051 \leq N \leq 10^{5}1≤N≤105−109≤ai≤bi≤109原创 2021-01-27 00:12:16 · 2746 阅读 · 0 评论