随笔分类 - 贪心
摘要:题意:你和朋友进行了$n$个回合的棋艺切磋,没有平局,每次要么输要么赢,每次赢可以得一分,假如前一局也赢了,那么可以得两分,结果已成定局,但是你确可以作弊,最多修改$k$个回合的结果,问你作弊后最多可以得多少分. 题解:假如有$WLW$,我们让中间的$L$变成$W$,那么就能得到$5$分,贪心,然后
阅读全文
摘要:题意:有一个长度为$n$的序列,可以任意取$k(1\le k\le n)$,对序列前$k$项或者后$k$减$1$,可以进行任意次操作,问是否可以使所有元素都变成$0$. 题解:贪心,我们优先考虑从左边减,如果当前项比后一项大$a_i>a_{i+1}$,那么我们一定可以从左边减,使得这个区间变为$0$
阅读全文
Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final) C. The Delivery Dilemma (贪心,结构体排序)
摘要:题意:你要买$n$份午饭,你可以选择自己去买,或者叫外卖,每份午饭$i$自己去买需要消耗时间$b_i$,叫外卖需要$a_i$,外卖可以同时送,自己只能买完一份后回家再去买下一份,问最少花多少时间能使午餐到家. 题解:我们可以用结构体记录每份午餐的外卖所需时间和自己拿的时间,然后贪心,对于某一份午餐,
阅读全文
摘要:题意:给你一个$01$串,需要将所有的$1$给炸掉,每次炸都可以将一整个$1$的联通块炸掉,每炸一次消耗$a$,可以将$0$转化为$1$,消耗$b$,问将所有$1$都炸掉的最小花费. 题解:贪心,如果$1$存在,那么我们至少要炸一次,然后可以枚举统计两个连通块之间的$0$的个数,判断是将这些$0$变
阅读全文
摘要:题意:给一个$nXm$的矩阵,可以选取$aXb$的子矩阵,使子矩阵中的所有元素减一,问最后是否能使矩阵中所有元素变为$0$. 题解:首先贪心,我们看最左上角的元素,如果$g[1][1]\ge0$,那么我们就要对其子矩阵的所有元素减去$g[1][1]$,然后因为$g[1][1]$已经是$0$了,假如$
阅读全文
摘要:题意:给$n$场考试的时间,每场考试可以提前考,但是记录的是原来的考试时间,问你如何安排考试,使得考试的记录时间递增,并且最后一场考试的时间最早. 题解:因为要满足记录的考试时间递增,所以我们用结构体记录两个时间,并按第一个时间排序,然后遍历考试时间,$ans$记录上次考试的时间,我们每次将两个时间
阅读全文
摘要:题意:C和D打牌,每张牌有花色和点数,小D刚开始的分数为$v$,不管输还是赢,只要小D出了牌(花色必须相同),就能得到那张牌点数的分数,若是赢了(点数不小于D的牌),他可以另外加$c$分,输了就要扣$c$分,现在D知道了C的出牌情况,问他最多能拿多少分,并输出出牌情况. 题解:首先,假如他两的牌花色
阅读全文
摘要:题意:给你一组数$a$和一个数$T$,将这组数分为两组$c$和$d$,定义$f(x)$为数组$x$中任意两个不同元素的和为$T$的个数,问为了使$min(f(c)+f(d))$,应该怎样对$a$分组. 题解:我们可以分成三种情况,假如一组数中所有元素都$< \frac{2}\(,或者\)>\frac
阅读全文
摘要:题意:给你一长度为$n$的序列,将其分为两个集合,求两个集合中未出现的最小元素的最大值, 题解:用桶存一下每个元素的个数,两次枚举$[1,100]$,找出两个最小值即可. 代码: int t; int n; int a[N]; map<int,int> mp; int main() { ios::s
阅读全文
摘要:题意:有一个长度为$n$的序列,可以操作$3$次,每次选取一段区间,然后区间的元素加减区间长度的倍数,$3$次操作后使得序列所有元素为$0$,问具体操作情况. 题解:假如我们能选择一整段区间$[1,n]$,使其所有元素都是$n$的倍数就好了,但是有的元素不是$n$的倍数,所以不能这样搞,但是我们可以
阅读全文
摘要:题意:给你一个由$0,1,?\(组成的字符串,你可以将\)?$任意改成$0$或$1$,问你操作后能否使得该字符串的任意长度为$k$的区间中的$0$和$1的个数相等. 题解:我们首先看前$k$个字符,那么对于区间$[2,k+1]$,如果要满足条件,$s_{k+1}=s_{1}$一定要成立,由此我们可以
阅读全文
摘要:题意:有一个长度为$n$并且所有元素和为$0$的序列,你可以使$a_-1$并且$a_+1$,如果$i<j$,那么这步操作就是免费的,否则需要花费一次操作,问最少操作多少次使得所有元素为$0$. 题解:首先优先考虑不用花费的情况,如果$a_>0$,\(a_{j}<0\),且$i<j$,那么我们可以免费
阅读全文
摘要:题意:给你一个正整数$n$,每次可以对$n$加一,问最少操作多少次是的$n$的所有位数之和不大于$s$. 题解:$n$的某个位置上的数进位,意味这后面的位置都可以被更新为$0$,所以我们从高位往低位记录一个$sum$,然后根据情况判断即可. 代码: int t; int s; ll n; char
阅读全文
摘要:题意:给你$a$和$b$两个数,每次操作可以是任意一个数$-1$,最多操作$n$,并且$a\ge x$,\(b\ge y\),求操作后$a*b$的最小值. 题解:观察样例并且在纸上推一推发现,我们要让$a$和$b$中,小的那个尽可能的小,然后模拟一下就好了. 代码: int t; ll a,b,x,
阅读全文
摘要:题意:给你一个长度为$3*n$的字符串,要求修改最少的次数,使得字符串中$0,1,2$的个数相同,并且在最少次数的情况下使字典序最小. 题解:贪心,$0$一定放在前面,$1$和$2$放后面,首先统计$0,1,2$的个数,因为题目要求字典序最小,所以我们先从左边开始遍历,如果$2$的个数大于$n/3$
阅读全文
摘要:题意:给你一个数组$a$,可以删除其前缀,要求操作后得到的数组是"good"的.对于"good":可以从数组的头和尾选择元素移动到新数组,使得所有元素移动后得到的新数组是非递减的.问最少删除前多少个元素满足条件. 题解:因为只删除前缀,所以我们可以倒着来看,感觉自己搞复杂了. 假如数组从最后一位
阅读全文
摘要:题意:石头剪刀布,bot有一串字符,表示他要出什么,你需要事先确定你的出招方案,然后遍历bot的字符串,从$i$位置开始跑一个循环,每次跑都要记录你赢的次数贡献给$sum$,现要求$\frac$最大,求你的最佳处找方案. 题解:贪心,全输出bot出招次数最多的对应即可. 代码: int t; str
阅读全文
摘要:题意:有$n$个桩子,$1$表示该位置有一个火炉,可以使两边距离为$r$的范围照亮,问最少使用多少炉子使得所有范围都被照亮. 题解:贪心,首先我们从$r$位置开始向左找,如果找到了就记录这个位置,然后答案+1,然后再从$2*r-1$这个位置开始向左找第一个没有标记的火炉,如果没有找到就直接输出$-1
阅读全文
摘要:题意:给一个$n$X$m$的矩阵,矩阵中某个数字$k$表示其四周恰好有$k$个不为0的数字,你可以使任意位置上的数字变大,如果操作后满足条件,输出新矩阵,否则输出NO. 题解:贪心,既然能使任意位置加大任意数值,那么我们可以将所有位置都给他填满,这样的话,只要是满足条件的情况就都能这样输出,所以我们
阅读全文
摘要:题意:有一个空环和$n$个点,每次可以选择一个点放在空环上,并且获得周围两个点中最小的那个的权值,问能获得的最大的权值是多少? 题解:我们每次都优先放最大的进去,注意每次放的时候都要将这个点放在当前能去得到的最大权值的周围,这样的话,每个最大值我们都能取两次,所以我们只要加一个最大的权值,然后剩下的
阅读全文

浙公网安备 33010602011771号