补题
i.ajls
这个作者很懒,什么都没留下…
展开
-
CF 1661D Progressions Covering(差分+线段树)
题目链接:点击跳转题意: 有两个长度相等的序列a,b,a序列开始全为0,b序列有题目给出,每次可以选择a中一段长度为k的序列,将该范围的数依次加上1,2,3…k,问最少多少次操作,能使对于任意i,使得ai >= bi。思路: 最后一位只能够使用k来消除,而用k消除也恰好是最快的,那么可以从后往前开始处理,但是要怎么更新序列呢,可以使用差分来给修改的每位都加上i(操作次数),用线段树来维护差分序列,求出的前缀和就是该点的值,从后往前处理一遍即可。代码如下:#include<bits/std原创 2022-04-12 17:27:22 · 533 阅读 · 0 评论 -
CF 1661C Water the Trees(思维)
题目链接:点击跳转题意: 公园里有N棵树,在奇数天浇水可以使树的高度+1,偶数天+2(每天只能浇一次水,可以选择不浇),问最少需要多少天,能使得所有树的高度一致。思路:如果当前树与最高的那棵树的高度差为奇数,那么就意味着该树至少要占用一次奇数天(只能多,不能少),而其他的均可通过偶数天完成。若偶数天如果大于奇数天,那么可以通过将一个偶数天拆成2个奇数天来减少时间。为保持奇数偶数尽量相等(使天数尽可能少),可以将偶数多出的天数的1/3转化为奇数天,如果存在余数,若余数为1,如果转化,则需要两个1天原创 2022-04-12 13:04:42 · 648 阅读 · 0 评论 -
CF 1665C Tree Infection(模拟 + 贪心)
题目链接: 点击跳转题意: 给你一棵树,每次你可以依次进行以下操作,1.对于一个节点,如果该节点有至少一个子树被涂色(可以理解为图着色,原译不是涂色)了,那么你可以任选他的子树上的另一个节点使其被传染(可以对多个节点操作,但每个节点的子树在一次操作只能传染一次),2.任选一个节点,使其被涂色(可以选1中操作过的子树中的节点),问最少几次操作能使整棵树都被涂色。思路: 开始想,从大的数量开始涂色,然后每棵更小的子树均可以对该子树提供传染的机会,但是这样子求出的值并不是最小的。错误代码:#include原创 2022-04-09 20:49:28 · 932 阅读 · 5 评论 -
CF 1656D K-good(思维)
题目链接:点击跳转题意: 给你一个数n(2 <= n <= 1e18), 问n是不是k-good数(及分成k个数,k个数的和为n,这k个数取模k的结果均不相同),如果存在多个k成立,输出任意一个即可思路:如果一个数能被拆成一个奇数和一个偶数的积(奇数不能为1),该数就是k-good数。取奇数个,如40 = 5 * 8, 取中间数为8,剩余的数可以依次改为 6 7 9 10。 取偶数个, 如102 = 6 * 17, 则中间数为 8 9,两边依次为3 4 5 6 7 10 11 12 1原创 2022-03-25 20:17:27 · 775 阅读 · 3 评论 -
CF 1654E Arithmetic Operations(枚举)
题目链接:点击跳转题意: 给出一个长度为n的序列a,问最少修改几个数字,能使得序列变成等差序列思路:枚举公差(我取了-300~300),用数组记录每个数字减去位置乘公差的值出现的次数,出现最多的次数就是在枚举范围内的最优解。但是这个枚举不能太大(完整枚举2e5 * 1e5会超时),但是只枚举小范围不能保证正确,如样例3最优解的公差为-20000,那么我们可以遍历数据,取数据中的数的差值作为公差(注意公差要为整数),同样记录,并更新最优解(注意:因为记录的差为2个数的差,但后续遍历没有加上原创 2022-03-21 21:26:11 · 659 阅读 · 0 评论 -
CF 1654C Alice and the Cake(模拟)
题目链接:点击跳转题意: 爱丽丝有一块蛋糕,她要把蛋糕切成n份,每一次操作,她会选择一块蛋糕(另大小为A),将其切成两半,两块大小分别为A / 2, (A + 1) / 2,及分成整数的两半,如果原大小为奇数,则一块会大1,现在给出一个序列,问有没有可能为一块蛋糕经过n - 1次操作后得到的思路: 由每一块拼回去会因为有不同的拼接操作无法判断,可以逆向思维,模拟一块完整的蛋糕切成现在的大小序列,通过维护两个最大堆,如果模拟的堆顶小于该序列,说明无法切出这个序列,输出NO,如果等于,说明序列中的一个元素已原创 2022-03-21 12:53:43 · 448 阅读 · 0 评论 -
Codeforces Round #770 (Div. 2) B. Fortune Telling
题目链接:点击跳转题意: 有一个长度为n的数组a,对于数组中的每个数,有两种操作方法,1.x + a, 2. x ^ a(^为异或符),Alice开始拥有的数为x,Bob拥有的数为x+3,每个人必须从数组a的开始到结束每个数选择一种方式进行操作,问谁的数能变成y(题目保证成立)。思路: 每一个数都有两种操作可能max(n) = 1e5,那么可能性有2的1e5次,但是仔细想想发现,不管是异或或是加上,对于最后一位数的二进制的结果是相同的(1 + 1(发生进位位数变回0) = 1 ^ 1, 0 + 1 =原创 2022-02-07 15:00:45 · 667 阅读 · 0 评论 -
Codeforces Round #770 (Div. 2) C. OKEA
题目链接:点击跳转题意: 商店有n排货架,每排有m个位置能装货物,货物的价格从1到n*m(每个价格一个),店里有一个机器人会从货架每一行的头开始取价格,每取一个价格加上后会计算平均价格,但是这个机器人很特殊,他遇到带小数的数字时会故障,问有没有排列能使机器人不会出现故障思路: 构建等差数列,根据行数的奇偶性来排列数字(如第一行:1 3 5 7 9, 1 3含两个1 和一个2,那么是2的倍数,1 3 5,含3个1和3个2,那么是3的倍数,以此类推),那么怎么判断不成立的情况呢,可以计算我们构建数列的最大值原创 2022-02-07 14:40:36 · 613 阅读 · 0 评论 -
2022牛客寒假算法基础集训营3 C 智乃买瓜(another version)
题目链接:点击跳转题意::和上题的区别就是现在是已知每个重量的西瓜能有多少种取法,求该组西瓜的重量(答案不唯一)思路::从前往后处理,如果当前这个重量增加了西瓜,因为可以买半个,那么一定会影响到前面的值导致错误,所以每个重量都认为从半个西瓜得到的,每增加一个使用上一题的dp(链接:点击跳转)来记录当前西瓜所能组成的数量,然后和输入数据比较,如果不够,就继续添加。代码如下:#include<bits/stdc++.h>using namespace std;typedef long原创 2022-01-29 18:48:05 · 1008 阅读 · 0 评论 -
2022牛客寒假算法基础集训营3 B 智乃买瓜
题目链接:点击跳转题意:有n个西瓜,每个可以买整个和买半个,问如果他想要购买西瓜的重量和分别为k=1,2,3…M时,有多少种购买西瓜的方案。思路:将每个西瓜和已经买下的使用dp进行组合,注意半个和整个要独立存入代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll MOD = 1e9 + 7;const int N = 1e3 + 5e2;signed main() {原创 2022-01-29 18:39:26 · 745 阅读 · 0 评论 -
牛客练习赛95 C-Division
题目链接:点击跳转题意:给出一个长度为n的数组,每次可以取长度大于等于k的一段对里面的数除二(向下取整),问能不能将里面所有数变为1代码:def get_ans(self): # 计算该数几次操作后变为1 ans = -1 # 因为是变为1,所以要减去一次 while self: ans += 1 self >>= 1 return ansdef main(): T = int(input()) N = 10原创 2022-01-21 14:17:58 · 450 阅读 · 0 评论 -
牛客练习赛95 B-Non-interger Area
题目链接:点击跳转题意:题目给出n个x,y坐标都是整数的点(有重复点),问存在几种选法可以使得选取的三角形面积不是整数思路:画完图后发现,如果三角形的三个顶点都在整数坐标上,那么构成的三角形面积就相当于左下右上(左上右下一样)构成的一个矩形,减去多余的两个或者三个三角形的面积后剩下的,因为构成的三角形边长均为整数,那么减去的面积只有两种情况,整数,或者带0.5的小数。然后把所有点归纳一下,可以分为四类:x奇y奇,x奇y偶,x偶y奇,x偶y偶,算了一些数据后发现,每个同类的点至多在构成三角形中只能出现一次原创 2022-01-21 13:21:14 · 511 阅读 · 0 评论 -
北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛 D 旅行家问题2
示例1输入:31 92 14 1输出:11示例二输入:64 28 43 02 37 10 1输出:13思路:重现的时候没过,之后看了过题的代码才明白。这题首先要求所有山都要经过然后回到出发点,也就意味着所有梯子都是要被用到的,往高的山走如果梯子不够长就要做飞机,这个是额外花费。既然所有梯子都要被用到,那么就在输入的时候就可以先把花费记起来,然后用贪心的思想,如何避免额外的花费呢,那就是每次都尽量往能到的最高的山上去,但是这样不容易维护,换一种思路,把数组按高.原创 2021-09-11 18:29:44 · 167 阅读 · 0 评论 -
CF1118D2 Coffee and Coursework (Hard Version)(二分)
题目描述InputThe first line of the input contains two integers n and m (1≤n≤2⋅105, 1≤m≤109) — the number of cups of coffee and the number of pages in the coursework.The second line of the input contains n integers a1,a2,…,an (1≤ai≤109), where ai is the caf原创 2020-09-02 22:54:49 · 238 阅读 · 0 评论 -
POJ 2777 Count Color(线段树+二进制存值)
DescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.There is a very long board with length L centimeter, L is a positive integer, so we can evenly divide原创 2020-09-01 23:01:45 · 83 阅读 · 0 评论 -
Hdu多校8-1009 hdu-6863 Isomorphic Strings
题目链接:点击跳转Problem DescriptionInputOutputFor each test case, output one line containing ‘‘Yes’’ or ‘‘No’’ (without quotes).Sample Input61a2aa3aab4abba6abcbcc8aaaaaaaaSample OutputNoYesNoYesNoYes题目大意:求给出的字符串的长度的因子(大于1的),以该因子拆分原串,原创 2020-08-17 21:37:10 · 112 阅读 · 0 评论 -
2020杭电多校联合训练6 1006 hdu-6832 A Very Easy Graph Problem
题目链接:点击跳转Problem DescriptionInputOutputSample Input13 20 1 0 3 13 2Sample Output10题目大意:这题要求在图中任意两点的最短路的距离和(只有前面的点的值为1和后面的点的值为0的情况下才需要加上)解题思路:因为这题的边权是2的i次,那么不难想到只要前面有能联通的边就不会去选择后面的边(因为前面的边全部选上都不会有后面的边的权重来的大),所以可以用并查集判断两个点是不是在一个集合里,不是就建边,原创 2020-08-06 21:32:57 · 150 阅读 · 1 评论 -
杭电多校3-Hdu6797 Tokitsukaze and Rescue
HDU多校3 - 6797 Tokitsukaze and Rescue(dfs+最短路)题目链接:点击跳转Problem DescriptionPrincess CJB has lived almost her entire life in the isolated town of Ertona, where CJB uses her unique ability to recognize where crystals of materials are buried. By way of a fat原创 2020-07-29 13:39:11 · 210 阅读 · 0 评论 -
zjyyoj_移除木板(贪心)
input case:41 22 33 41 331 21 21 221 22 3output case:120解题思路:用尽可能短的模板来铺成一行,那么较长的板都会被移除,(因为板越短占的区域就越小,那就是题目要求的最小移除数),用贪心的思路去写,优先排序右端点,小的在前,然后排左端,小的在前,然后每次取板子,如果重合了区间,就++,表示这个木板要被移除...原创 2020-03-08 17:55:12 · 145 阅读 · 0 评论 -
Hdu 1003 Max Sum
Hdu 1003 Max Sum题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003解题思路:暴力从第一位开始求和,如果当前结果不如当前位的值,那就更新当前结果为当前位的值,更新左右位置,不然就更新右边位置和加上当前位的值,每次比较结果和最大值,如果比最大值大就更新最大值即左右区间。代码如下:#include <bits/stdc...原创 2020-03-07 16:51:58 · 154 阅读 · 0 评论 -
Hdu 1421 搬寝室
Hdu 1421 搬寝室题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421解题思路:对于每一位的物品,都有取与不取两种做法,如果取了,那就要加上疲劳值,不取,那就等于前面算好的结果,(初始化要完整),用二维dp来处理,i表示物品数,j表示物品对数,状态转移方程:dp[i]j=min(dp[i-1]j,dp[i-2][j-1]+(num[i...原创 2020-03-07 16:37:42 · 157 阅读 · 0 评论 -
Hdu 1087 Super Jumping! Jumping! Jumping!
Hdu 1087 Super Jumping! Jumping! Jumping!题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087解题思路:用dp数组记录到i位的最长上升序列的和,每一步往前找前置最大的符合题意的结果,转移方程dp[i]=max(dp[i],dp[j]+num[i]);代码如下:#include <bits/st...原创 2020-03-07 15:37:53 · 104 阅读 · 0 评论 -
Hdu 1176 免费馅饼
Hdu 1176 免费馅饼题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176刚开始没看到gameboy开始在5这个位置,拿全位置写了,直接wa,然后重新倒着写了一遍,就过了,简单的一道dp题,状态转移方程(dp[i][j]=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])+p[i][j]),p为记录的馅饼位...原创 2020-03-07 15:24:05 · 96 阅读 · 0 评论 -
Hdu 2066 一个人的旅行
Hdu 2066 一个人的旅行题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066解题思路:因为起点城镇和终点城镇的极限数据就是n次迪杰斯特拉,即O(nnn),所以不然直接干脆用弗洛伊德算法处理,写起来还简单.代码如下:#include<bits/stdc++.h>using namespace std;#define ...原创 2020-03-03 19:24:27 · 127 阅读 · 0 评论 -
Hdu 2112 HDU Today
Hdu 2112 HDU Today题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112解题思路:唯一麻烦的就是地点全部是字符串,解决办法就是用map把字符串映射成int型再用迪杰斯特拉算法去处理就行,注意一下,最后要特判起点等于终点的时候要把dist值改为0,因为开始会把起点终点映射成两个int值,所以会导致起点和终点是一个点的时候出错。...原创 2020-03-03 19:10:26 · 198 阅读 · 0 评论 -
Hdu 2544 最短路
Hdu 2544 最短路题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544解题思路:迪杰斯特拉模板题,(虽然n才100,应该可以用弗洛伊德算法做),枚举起点1开始的所有点,能不能让一个城镇在通过起点经过的点之后变得距离更短,最后输出距离就行了;代码如下:#include <bits/stdc++.h>using name...原创 2020-03-03 19:00:55 · 147 阅读 · 0 评论 -
Hdu 1874 畅通工程续
Hdu 1874 畅通工程续题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874解题思路:迪杰斯特拉模板题,枚举从s开始路上的点是否能通过其他点到另一个点的距离更短即可。代码如下:#include <bits/stdc++.h>using namespace std;#define inf 0x33f3f3f#defi...原创 2020-03-03 18:54:03 · 221 阅读 · 0 评论 -
Hdu 1426 Sudoku Killer
Hdu 1426 Sudoku Killer题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426解题思路:用dfs从第一个开始一格一格往下遍历,直到超出格子为主(因为题目保证一定存在唯一解),每次遇到?就尝试把1到9填进去,看是否符合当前情况,符合该值,继续递归,到超出格子就表示已经找到了,把结果输出就行了,注意输入(两组样例中可能有空行...原创 2020-03-03 18:33:21 · 147 阅读 · 0 评论 -
Hdu 5965 扫雷
Hdu 5965 扫雷题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5965解题思路:用num数组记录样例给出的数字,用dp数组记录每位的地雷数量,通过给出的第一位数字来枚举第一位可能的地雷数,然后第二位的地雷数就能确定了,一定是num[0]-dp[0],(0为第一位的下标),因为扫雷标记的数字只会是8方向的格子,但是第一位影响的到的只有自己这...原创 2020-03-02 19:45:43 · 209 阅读 · 0 评论 -
Hdu 5961 传递
Hdu 5961 传递题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5961解题思路:题目最重要的一句话,如下图.只有a->b,b->c,一定存在a->c,那么就很容易处理了,只要把a连接的所有点标记掉,那如果图是传递的,就不存在其他点能通过a连接的点到达,反之图就不是传递的,及如果bfs搜到了长度超过1的路径,就意...原创 2020-03-01 21:12:08 · 170 阅读 · 0 评论 -
Hdu 6675 度度熊与排列
Hdu 6675 度度熊与排列题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6675解题思路:用map暴力记录上面这串在下面这串里的出现次数,每一 次记录后判断这两串中每个字符数量是不是一样,如果不一样,那就表示不可能满足题目,标记flag直接输出-1即可,然后就是用for遍历m次,每次找出现次数最多(表示可能性最大),用map保证了出现次数...原创 2020-03-01 17:45:33 · 105 阅读 · 0 评论 -
Hdu 6290 奢侈的旅行
Hdu 6290 奢侈的旅行题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6290这道题目限制点非常多,首先是在t极限为30的情况下,n最大为1e5,明显裸的迪杰斯特拉(3e11的时间复杂度,就算给了7秒也是一定会超时)是过不去的,但是因为道路数量限制在了2e5,那就可以用优先队列优化,极限复杂度也就是跑完所有道路6e6的复杂度完全够了。...原创 2020-02-29 19:51:11 · 106 阅读 · 0 评论 -
Hdu 6676 度度熊与运算式 1
度度熊与运算式 1题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6676解题思路:开始想是不是把所有?都改成+会最大。后面才发现如果两个同样大的偶数异或之后就变小了,所以只有是不行的,那要使结果最小,显然要使每个串尽量组成没有组成过的2的幂次,那就先把?串全部存起来,这里面1的数量就是?个数加1,然后从大到小(从小到大会导致把大的拆了可能就无...原创 2020-02-29 17:28:05 · 145 阅读 · 0 评论 -
水流问题
水流问题样例输入:5 51 2 2 3 53 2 3 4 42 4 5 3 16 7 1 4 55 1 1 2 4输出:7这道题目也不是很难,bfs搜两次就好了,一次太平洋,一次大西洋,然后遍历标记数组,都能到的就累加。搓了很久没做出来又是很基本的错误,忘了初始化标记数组。。。还是不够仔细。#include<bits/stdc++.h>using nam...原创 2020-02-26 21:05:07 · 465 阅读 · 0 评论 -
zjyyoj_好基友
好基友这道题目真的写的头都大了,找了很久的bug,一直不知道错了哪,最后发现把数字写错了,该加一的减了一,一直错,后面debug看到了数组里面数交换的不对才发现问题。其实解法很简单,因为不需要相邻就可以交换,那要想全部达到条件交换就可以一个一个找,输入的时候记录好每个数字的位置,然后,每次更新交换到后面的数的位置和值就好了,因为前面的数不会再被遍历到,最后输出就行了。#include&l...原创 2020-02-26 20:58:03 · 141 阅读 · 0 评论