摘要: 题目链接 思路: 1.当拥有两个以上的最大值时,永远不会发生一个代表反复发言的情况 2.当有一个最大值时,如果没有max-1的话,没有答案,且有max-1的情况中max-1必须在max后面,所以最后的答案和max - 1的个数有关 3.总情况有n!种,减去不合法的情况即为答案,设max-1的个数为k 阅读全文
posted @ 2021-12-02 20:03 流氓丙土匪丁 阅读(18) 评论(0) 推荐(0)
摘要: 题目链接 思路: 只能往上和右走(直角坐标系y轴关于x轴对称下来,然后x和y调换下位置),所以总共走的路长只有2*n 由于每个a[i]代表的是在下一次转向前每走一步的花费,所以可以考虑贪心 只要找到最小的每步代价,将前面的都置为一步,剩下的用最小代价走完,所得的总代价即为答案 枚举每一个a[i],对 阅读全文
posted @ 2021-12-02 19:14 流氓丙土匪丁 阅读(21) 评论(0) 推荐(0)
摘要: 题目链接 思路: 我们最终需要找到的答案,是每一次上毒药的最小持续时间,使得n次以后,总伤害大于等于h(若毒药还在持续时间内,则刷新时间)。 假设答案是x,则x-1不可行,但是x+1,x+2,···都可行,所以可以考虑二分来做。 由于n很小,所以可以考虑每次找到一个持续时间后(设为mid),遍历n个 阅读全文
posted @ 2021-12-02 09:18 流氓丙土匪丁 阅读(50) 评论(0) 推荐(0)
摘要: 题目链接 思路: 这题很明显就是二分,感觉自己对二分的理解不够,导致比赛时调了一个小时还没有出来。这里我们把整个2*k-1行字符的前缀和当做一个单调递增的序列,这样就符合了二分的性质,然后先判断2*k-1行的和是否超过x,没有就直接输出2*k-1,否则二分计算答案,对于每一个mid,我们判断是否超过 阅读全文
posted @ 2021-11-23 22:27 流氓丙土匪丁 阅读(181) 评论(0) 推荐(0)
摘要: 思路: 对于从K个数中选取长度为N的序列,每一个数都有N个选择,所以总共有K的N次选择,每次选择又有M个数可以选择,所以有M的K的N次选择,由于K的N次过大,不可直接用快速幂,所以采用欧拉降幂,具体推导如图: 顺便放个欧拉降幂公式: 代码: #include <bits/stdc++.h> #def 阅读全文
posted @ 2021-11-22 11:35 流氓丙土匪丁 阅读(70) 评论(0) 推荐(0)
摘要: 思路: 题目要求添加最少的数使得数组里所有的连续子序列和不为0,对所有子序列的和,考虑前缀和,从前往后枚举前缀和(这里不先预处理所有,枚举一个加一个,后有解释),先标记这个和,如果后面又出现了这个和,说明两者之间的和为0(这个思想老是忘记,好烦),这时候我们需要在这两个数之间添加一个数使其不为0,这 阅读全文
posted @ 2021-11-15 23:00 流氓丙土匪丁 阅读(37) 评论(0) 推荐(0)
摘要: 思路(贪心): 排序后分奇偶,小的放在奇数位,大的放在偶数位,最后for一遍查找满足条件的解即可(蒟蒻啥都不会,只能借鉴他人思路) 链接:(10条消息) D2. Sage‘s Birthday (hard version)(构造+贪心)_C_Dreamy的博客-CSDN博客 代码: #include 阅读全文
posted @ 2021-11-15 22:43 流氓丙土匪丁 阅读(43) 评论(0) 推荐(0)