![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 74
immortal_luo
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 121 1626C Monsters And Spells
题目描述(传送门)题目翻译:Monocarp正在玩电脑游戏,他现在是一个巫师学徒,只会一个技能。幸运地是,这个技能可以打败怪兽。当前有n个怪兽,第i个怪兽在第ki 秒出现,且该怪兽的生命值为hi。其中hi ≤ ki,且ki互不相同。Monocarp可以在整秒时刻(从1开始,1,2,3,…)发出技能,技能的伤害为:如果前一秒他没有发出技能,则此时技能的伤害值为1;如果前一秒技能的伤害值为x,则他可以选择此时技能的伤害值为x+1或1。使用一个伤害值为x的技能,将消耗x个mana,并且mana不可再生。原创 2022-01-21 13:50:23 · 328 阅读 · 3 评论 -
Educational Codeforces Round 121 1626B Minor Reduction
题目描述(传送门)题目翻译:给你一个十进制数x,高位没有多余的0。你需要对其执行一次操作:将x中两个相邻的数替换成它们的和(它们的和的高位也不能有多余的0,比如如果和是9,就用9来替换,而不是09;如果和是0,则用0来替换,而不是00)比如,如果x = 10057,则可能的结果是:选择第一位数1和第二位数0,用1+0=1来替换,则结果是1057;选择第二位数0和第三位数0,用0+0=0来替换,则结果也是1057;选择第三位数0和第四位数5,用0+5=5来替换,则结果仍然是1057;选择第四原创 2022-01-19 14:57:37 · 356 阅读 · 0 评论 -
Codeforces Round #766 (Div. 2) 1627B Not Sitting
题目描述(传送门)题目翻译:在一个教室里排列着n × m的座位,第r行第c列的座位用 (r,c) 表示。座位 (a,b) 与 (c,d) 之间的距离= | a - c | + | b - d | 。现在有两个人,分别是Rahul和Tina。Tina有k桶粉色油漆,然后依次发生以下事件:Tina选择k个座位刷上粉色油漆,一桶油漆正好刷一个座位。然后Rahul选择自己的位置,但他不会选择被刷上粉色油漆的座位。最后Tina再选择自己的位置,她可以选择任意一个位置,不管有没有涂上粉色油漆,但是不能选原创 2022-01-18 13:43:07 · 378 阅读 · 0 评论 -
Codeforces Round #765 (Div. 2) 1625B Elementary Particles
题目描述(传送门)题目翻译:对于序列(a1,a2,…,an),可以用(al,al+1,…,ar)来表示其子序列,其中l表示左边界,r表示有边界(1 ≤ l ≤ r ≤ n)。比如对于序列(1 4 2 8 5 7)及边界l = 2, r = 4,则子序列为(4 2 8)。当两个序列的l和r中有一个不相同时,两个序列就被认为是不相同的序列。注意,即使两个子序列的元素相同且排列顺序一样,但只要l和r有一个不相同,两个子序列就是不相同的。比如有序列(1 1 1 1 1)以及两个子序列:l=1,r=3和l=2原创 2022-01-13 11:18:37 · 280 阅读 · 2 评论 -
Codeforces Round #764 (Div. 3) 1624C Division by Two and Permutation
题目描述(传送门)题目翻译:给你一个由n个正整数组成的数列a。你可以对其进行以下操作。在一次操作中,你可以将任意元素ai替换成⌊ai /2⌋,即将ai除以2(向下取整),也可以说是“整除2”。判断是否可以通过任意次(可能0次)上述操作将原数列变成一个全排列(all permutation,即用整数1~n以任意顺序排列而成的数列,且每个整数只出现一次)。比如,如果a=[1,8,25,2],n=4,则答案是yes,你可以进行以下操作:将8替换成⌊8/2⌋=4,则a=[1,4,25,2]。将25原创 2022-01-12 11:13:21 · 302 阅读 · 0 评论 -
Codeforces Round #764 (Div. 3) 1624D Palindromes Coloring
题目描述(传送门)题目翻译:你有一个由小写英文字母组成的字符串s。你可以为一些字符上色(用数字1~k来表示不同的颜色)。但没有要求所有的字符都必须上色。但是对于每种颜色,必须至少有一个字符是该颜色的。你可以交换两个相同颜色字符的位置任意多次。然后,会产生k个字符串,第i个字符串中所有的字符都是第i种颜色,并且字符的顺序与其在s中的顺序一致。你的任务是为字符串s上色,使得到的k个字符串都是回文字符串,并且使这k个字符串中最小的字符串的长度尽可能地长。回文字符串表示不论从左到右还是从右到左读该字原创 2022-01-11 13:56:49 · 225 阅读 · 0 评论 -
AtCoder Beginner Contest 234 E - Arithmetic Number
题目描述(传送门):我们将满足以下条件的正整数n称为算术数(Arithmetic Number)。di 表示n的第i位数(从左向右数,并且n用十进制表示,数字前没有多余的零),其满足(d2-d1)=(d3-d2)=…=(dk-dk-1),其中k是n的位数。如果n是一位数,则其被认为是算术数。比如,234,369,86420,17,95,8,11,777都是算术数,而751,919,2022,246810,2356不是。请找到一个最小的算术数,但其不能小于X。X是介于1到1017之间的数(包括原创 2022-01-08 21:46:56 · 240 阅读 · 0 评论 -
codeforces Round #681 (Div. 2) 1443B Saving the City
题目链接题目翻译:Bertown是一个由n个建筑组成的城市,且这n个城市成一条直线。城市的保安部门发现一些建筑下面有炸弹。有一张地图可以显示哪些建筑下面有炸弹,该地图是一个长度为n的字符串,如果第 i 个字符是 “1” ,这表示第 i 个建筑下面有炸弹,如果是 “0” ,表示第 i 个建筑下面没有炸弹。Bertown最厉害的士兵知道怎么在不毁坏建筑的前提下引爆炸弹。当第x个建筑下面的炸弹被引爆时,将会引爆相邻的两个建筑(x - 1和x + 1)下面的炸弹(如果相邻的建筑下面没有炸弹,就不会发生什原创 2020-11-04 13:32:08 · 216 阅读 · 0 评论 -
codeforces Round #681 (Div. 2) 1443A Kids Seating
题目链接题目翻译:今天幼儿园来了n个新小朋友,需要被安排到饭桌。饭桌的椅子从1到4n编号。两个小朋友不能坐同一张椅子。如果两个小朋友坐到编号为a和b的椅子上(a≠b),并且a和b满足以下条件的话,两个小朋友将会是淘气的:gcd(a,b) = 1 或者,a 整除 b 或者 b 整除 a 。gcd(a,b)表示a和b的最大公约数。比如,如果n = 3,并且小朋友们坐到2,3,4号椅子上,那么他们将会是淘气的,因为4能被2整除,并且gcd(2,3) = 1。如果小朋友们坐到4,6,10号椅子上,原创 2020-11-03 21:04:13 · 142 阅读 · 0 评论 -
codeforces Round #680 (Div. 2) 1445B Elimination
题目链接题目翻译:这是一个著名的奥林匹克竞赛,参赛者的数量超过100人。该竞赛由两个阶段组成:淘汰赛和决赛。至少有100个人会晋级决赛。相应的,淘汰赛由两场比赛组成。淘汰赛的结果是两场比赛的分数之和。但是不幸的是,裁判搞丢了淘汰赛的最终排名,只有第一场比赛和第二场比赛的排名。每场比赛,参赛者将以分数按非递增的顺序排名。在第一场比赛中,第100名的分数是a分,并且第1名到第100名(包括第1名和第100名)这100个人在第二场比赛都至少得到了b分。同样地,在第二场比赛中,第100名的分数是c分,原创 2020-11-02 15:25:34 · 363 阅读 · 0 评论 -
codeforces Round #680 (Div. 2) 1445A Array Rearrangment
题目链接题目翻译:给你两个数组a和b,每个数组由n个整数组成,以及一个整数x。请判断是否可以通过重排b中的元素,使得ai + bi ≤ x对任何 i 都成立(1 ≤ i ≤ n)。数组a和数组b中的元素都将以非递减的顺序读入。每个测试用例之间将以空行分隔。解题思路:为了让所有两个数的和尽可能小,最好的组合是 “最小值”+“最大值”所以只需要依次判断数组a剩余的数中的最小值+b剩余的数中的最大值是否小于等于x。代码:#include<iostream>#include<c原创 2020-11-02 14:51:52 · 170 阅读 · 0 评论 -
AtCoder Regular Contest 107 B - Quadruple
题目链接题目翻译:给你两个整数N和K,求有多少种组合方式 (a,b,c,d),使其同时满足下面两个条件:1 ≤ a,b,c,d ≤ Na + b - c - d = K解题思路:首先来分析一下a + b - c - d = K:a + b - c - d = K => a + b - (c + d) = K把a+b,c+d看做两个整体A、B,即A - B = K(A = B + K,B = A - K)可以发现K的正负,对结果并没有影响,所以我们直接对K取绝对值,方便后面的计算原创 2020-11-01 12:03:45 · 117 阅读 · 1 评论 -
AtCoder Regular Contest 107 A - Simple Math
题目链接题目翻译:给你三个正整数A,B,C,让你求下面公式的值,并对998244353取模解题思路:一看这109,就知道不可能暴力,既然题目都说是数学了,那肯定是要化简公式了。这里就直接拿官方的来用了我看了下自己当时的化简,几乎一样,但是格式比较难看。然后就直接计算,及时取模。基础太差的我不知道估算数据的范围,一直以为**A(A+1)**会超出long long的范围,还想先除2(看了我的代码你们就知道了)。实际上直接算就行了。我的代码:#include<iostream&g原创 2020-11-01 09:54:21 · 208 阅读 · 0 评论 -
HDU1171 Big Event in HDU
题目链接题目描述:Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don’t know that Computer College had ever been split into Computer College and Software College in 2002. The splitting is absolutely a big event in HDU原创 2020-10-31 10:55:55 · 166 阅读 · 0 评论 -
HDU2546 饭卡
题目链接题目描述:电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。解题思路:可以将买菜分成两个步骤:买一些菜(除了最贵的菜),使得卡里的余额尽可能地接近5块,但是必须大于等于5块。这步就像为后面打好基础一样。原创 2020-10-30 20:42:21 · 198 阅读 · 0 评论 -
Educational Codeforces Round 97 1437C Chef Monocarp
题目链接题目翻译:厨师Monocarp刚刚把n道菜放进了烤箱。他知道第i道菜最佳的烹饪时间是ti 分钟。在任何正整数时间点T,Monocarp最多只能从烤箱中拿出一道菜。如果第i道菜在第T分钟拿出来,那么其不高兴值为 |T-ti| 。一旦菜从烤箱拿出来,就不能再放回去。Monocarp需要将所有菜从烤箱拿出来,求他能得到的最小不开心值。解题思路:动态规划,用数组f[i][j] 表示在第i分钟拿出前j道菜得到的最小不开心值。对于每个i和j,有两种情况,在第i分钟,要么取第j道菜,要么不取第j道原创 2020-10-28 16:30:17 · 1673 阅读 · 3 评论 -
Educational Codeforces Round 97 1437B Reverse Binary Strings
题目链接题目翻译:给你一个长度为n的字符串s,其中n是偶数,并且s是二进制串,即只由’0’和’1’组成。s有n/2个’0’和n/2个’1’(n是偶数)。在一次操作中,你可以翻转s的任意子串,一个字符串的子串指的是该字符串的一段连续的字符串。你需要执行多少次这样的操作,使得字符串中的’0’和’1’是交替出现的,即对于所有的i,si≠si+1都成立。比如:01010101…和10101010…解题思路:通过看题目给出的例子可以发现,下划线上的第一个数字1是连续两个1中的第二个1,下划线上的最后原创 2020-10-28 13:53:15 · 257 阅读 · 0 评论 -
Educational Codeforces Round 97 1437A Marketing Scheme
题目链接题目翻译:你得到了一个宠物店售货员的工作。你当前的任务是提升猫粮的销售量。其中一个战略是将多罐猫粮打包成一个商品出售,以折扣来吸引用户。假设你决定将a罐猫粮打包成一个商品,并且当一些顾客想要买x罐猫粮时,那么他会根据以下的贪心战略来购买:他会先买[x/a]个打包的商品,因为有折扣。然后再买剩下的几罐(x mod a),一罐一罐地买。[x/a]表示x整除a(向下取整),x mod a表示x对a取余。但是顾客也很贪心,因此如果顾客想要一罐一罐买 x mod a 罐猫粮并且(x mod原创 2020-10-28 13:18:30 · 249 阅读 · 0 评论 -
codeforces Round #678 (Div. 2) 1436C Binary Search
题目链接题目翻译:Andrey认为自己是一个成功的开发者,但事实上他直到最近才知道二分搜索算法。在阅读一些文献之后,Andrey知道了这个算法是为了在一个数列中快速地找到某个确定的值x。对于下标从0开始的数组a和整数x,下面是算法的伪代码:注意数组中数字的下标从0开始,整数相除结果向下取整。Andrey发现只有当数组是有序的,算法才起作用。然而,他发现这个说法是不正确的,因为有些乱序的数组,也能通过二分搜索算法找到数字x!Andrey想要给书的作者写一封信,但是在此之前他必须先找到一个长度为n原创 2020-10-26 15:55:56 · 293 阅读 · 3 评论 -
codeforces Round #678 (Div. 2) 1436B Prime Square
题目链接题目翻译:Sasha喜欢研究不同的数学对象,比如魔术方形。但是Sasha知道已经有很多人研究过魔术方形,因此他不想继续学习它们。相反,他发明了新的方形——一个素数方形。如果一个n×n的方形同时满足下面三个条件,那么就称其为素数方形:方形中所有数字都是正整数且不大于105;方形中不存在素数每一行、每一列的数字和都是素数。Sasha有一个整数n,要求你找出任意一个n×n的素数方形。Sasha确定存在这样的方形,所以请帮助他。我的解题思路:首先,我们要先找出这样一行数,所有数都是非原创 2020-10-26 14:52:52 · 157 阅读 · 0 评论 -
codeforces Round #678 (Div. 2) 1436A Reorder
题目链接题目翻译:给你一个由n个整数组成的数组a和一个整数m,问将数组a重新排列,能否使其满足等于m。不允许删除和添加元素。注意所有的运算都不取整,比如5/2=2.5。解题思路:分析题目给出的公式可以发现,题目其实就是在问数组a中所有元素的和是否等于m。代码:#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<vector&g原创 2020-10-26 14:04:34 · 159 阅读 · 0 评论 -
codeforces Round #677 (Div. 3) 1433D Districts Connection
题目链接题目翻译:小镇上有n个地区,第i个地区属于帮派ai。最开始所有地区之间都没有道路连接。你是这个城市的市长,并想建立n-1条道路连接所有地区(两个地区可以被直接连接,也可以通过其它地区间接连接)。如果两个属于同一帮派的地区被直接连接,则会起冲突。你不想让这种事情发生,所以你的任务是建立n-1条道路,使得所有的地区都是可以相互抵达的(可能通过其他地区抵达)并且任意两个直接连接的地区属于不同的帮派。或者回答无法建立满足条件的n-1条道路。你需要回答t个独立的测试用例。我的解题思路:可以先原创 2020-10-22 15:26:43 · 123 阅读 · 0 评论 -
codeforces Round #677 (Div. 3) 1433C Dominant Piranha
题目链接题目翻译:在鱼缸里有n条食人鱼,它们的大小分别是a1,a2,…,an,并从左到右编号。伯兰州立大学的科学家想要知道在鱼缸里是否存在占统治地位的鱼。如果一条鱼能吃掉鱼缸里所有的鱼(当然不包括它自己),那么就称这条鱼是占统治地位的鱼。当其它鱼被占统治地位的鱼吃掉时,他们没有反抗的余地。由于鱼缸特别狭窄而且长,在一次移动中,食人鱼只能吃相邻的两只鱼中的任意一只并且可以移动任意多次。更精确地说:食人鱼i可以吃食人鱼i-1,如果食人鱼i-1存在并且ai-1<ai.食人鱼i可以吃食人鱼i+原创 2020-10-22 14:35:53 · 233 阅读 · 0 评论 -
codeforces Round #677 (Div. 3) 1433B Yet Another Bookshelf
题目链接题目翻译:有一个能装n本书的书架。如果书架的第i个位置上有一本书,则ai=1,否则ai=0。题目保证书架上至少有一本书。在一次移动中,你可以选择一段连续的区间[l;r],每个位置上都要有书(即对于任意i,l<=i<=r,ai=1都成立),然后:将区间向右移动一个位置:对于所有的下标i(l<=i<=r),把下标为i的书移动到下标为i+1的位置。只有当r+1<=n并且下标为r+1的位置上没有书的时候才可以移动。将区间向左移动一个位置:对于所有的下标i(l<原创 2020-10-22 14:07:16 · 183 阅读 · 0 评论 -
codeforces Round #677 (Div. 3) 1433A Boring Apartments
题目链接题目翻译:有一个由10000个公寓组成的建筑,公寓的编号从1到10000(包含1和10000)。如果一个公寓的编号由相同的数字组成,则称这个公寓是无聊的。比如11,2,777,9999。我们的角色是一个捣蛋鬼,以下面的顺序不停地拨打所有无聊公寓的对讲机,直到有人回应:首先拨打所有由数字1组成的公寓,以递增的顺序(1,11,111,1111)。然后拨打所有由数字2组成的公寓,以递增的顺序(2,22,222,2222)。以此类推无聊公寓x的住户回应之后,我们才会停止拨打。我们想要知原创 2020-10-21 22:08:33 · 358 阅读 · 0 评论 -
动态规划刷(杂)题合集
连续子数组的最大和(题目链接)题目描述:输入一个 非空 整型数组,数组里的数可能为正,也可能为负。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。解题思路:最粗暴的方法就是都遍历一遍class Solution {public: int maxSubArray(vector<int>& nums) { const int N = nums.size(); int maxn = INT_原创 2020-07-19 10:49:22 · 398 阅读 · 1 评论 -
背包问题求方案数、背包问题求具体方案
闫神视频笔记视频链接在01背包的基础上要求出最优解的方案数背包问题求方案数(题目链接)解题思路:我们可以设置一个与数组f功能类似的数组g,其中f[i]保存的是体积等于i的最优解(这里是等于,之前的博客说的是小于等于,原因后面会说),而g[i]保存的是体积等于i时的最优解的方案数,而f[i]为什么保存的是等于i的最优解的原因是这样更有利于计算方案数(比如最优解的情况下,体积是4,但是背包的容量是6,如果按小于等于来保存结果,最后统计方案数的时候会把体积是5和6的也计算在内,导致重复计算,因为体积原创 2020-07-18 09:59:37 · 1175 阅读 · 2 评论 -
混合背包问题、二维费用的背包问题、分组背包问题、有依赖的背包问题
闫神视频笔记视频链接混合背包问题就是结合01背包、完全背包、多重背包的问题混合背包问题(题目链接)解题思路:可以先将多重背包部分用二进制优化的方法转化成01背包问题,最后就剩下01背包和完全背包,而两者计算的差别就是循环的顺序,一个向前,一个向后,所以只要在循环的时候判断一下就行了。代码:#include<iostream>#include<cstring>#include<string>#include<algorithm>#inc原创 2020-07-14 09:26:59 · 287 阅读 · 0 评论 -
多重背包问题(暴力、二进制优化、单调队列优化)
闫神视频笔记视频链接多重背包与01背包的差别就是多重背包每样物品的数量有指定数量的限制题目链接(acwing 多重背包问题I)解题思路:本题的数据范围比较小,所以可以直接用最暴力的方法,即在01背包的基础上,遍历一下物品的个数代码:#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<vector>#include&原创 2020-07-13 09:57:00 · 262 阅读 · 0 评论 -
滑动窗口(单调队列)
闫神视频笔记视频链接单调队列就是维护一个队列,使得队列中的数保持单调性,每次队首的数就是最值。题目链接(acwing 滑动窗口)解题思路:以求最小值为例,每次新增一个数的时候,从队尾开始,去除比这个数大的数,使得每次队列中保存的数都是单调递增的数,所以每次的最小值就是队首的数。当队首的数超出框的范围时,要即使剔除。代码:#include<iostream>#include<cstring>#include<string>#include<al原创 2020-07-09 10:37:27 · 155 阅读 · 0 评论 -
完全背包问题
闫神视频笔记视频链接完全背包与01背包的差别就是完全背包每样物品的数量没有限制题目链接(acwing)解题思路:关键在于如何让一个物品可以被多次选择,我们用数组 v[] 保存每个物品的价值,数组 w[] 保存每个物品的体积。我们可以先思考01背包是怎么做到每个物品只能选择一次的。在01背包中,我们用一维数组f[]保存前i个物品,体积为1-m的最大价值,遍历的顺序是从后往前(即从m->v[i]),以此保证在计算前i个物品,体积为j的最大价值时,需要用到的数据还未被覆盖(前i-1个物品,体积原创 2020-07-07 09:25:30 · 138 阅读 · 0 评论 -
01背包问题
闫神视频笔记视频链接01背包问题即…题目链接(acwing)解题思路:每个物品有选和不选两种选择。我们可以用一个二维数组opt[i][j]代表前i个物品,体积为j的最大价值。在体积为j的情况下,如果选择第i个物品,则前i个物品的最大价值为前i-1个物品,在体积为j-第i个物品体积的情况下的最大价值;如果不选择第i个物品,则前i个物品的最大价值为前i-1个物品,在体积为j的情况下的最大价值。而两种选择中的最大值,即为前i个物品在体积为j的情况下的最大价值。最后输出opt[N][V](即前N个物品,体原创 2020-07-03 10:08:40 · 248 阅读 · 0 评论 -
动态规划(二)
大佬的第二个视频代码视频链接题目一:题目描述:在一个数组中(只包含正整数)找出一组不相邻的数,使得其和最大解题思路:关键思想: 每个数有选和不选两种选择。按前i个数的最优解来说,如果选这个数,则这个数的前一个数就不能选,因此此时的最优解就是前i-2个数的最优解加上当前的数字;如果不选这个数,则最优解就是前i-1个数的最优解。因此前i个数的最优解,就是这两个选择中的最优解(即最大值)。起点: 当i=0时,最优解就是当前这个数;当i=1时,最优解就是前两个数中的最大值。测试数据:71 2 4原创 2020-07-01 12:26:38 · 104 阅读 · 0 评论 -
动态规划(一)
看了大佬的视频后,用自己的代码实现了其中的题目视频链接题目描述:有n个任务,每个任务有起始时间点,结束时间点,获得的报酬。同一时间不能同时做两个任务,问最多可以获得多少的报酬。解题思路:数组:pre:保存每个任务前一个能做的任务(要做当前任务的情况下)opt:保存前i个任务的最优解关键思想:为了让数据更有序,按照每个任务的结束时间以升序进行排序。每个任务有选或不选两种选择。前i个任务的最优解是 ==前i-1个任务的最优解(不选择当前任务)==和 当前任务的报酬+前一个最接近当前任务(不与当前原创 2020-07-01 10:50:42 · 149 阅读 · 0 评论 -
ZOJ1845 Australian Voting
ZOJ1845 Australian Voting题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=845Australian ballots require that the voter rank the candidates in order of choice. Initially only the first...原创 2019-04-14 20:13:42 · 163 阅读 · 0 评论 -
HDU5938 Four Operations
Four Operations题目链接【题目描述】Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4153 Accepted Submission(s): 1193Problem DescriptionLittle Rui...原创 2019-04-16 10:30:39 · 140 阅读 · 0 评论