- 博客(15)
- 收藏
- 关注
原创 2024牛客寒假算法基础集训营2
这里提供两种做法:1我们可以开n个vector存每一个宝石出现的位置,每次去找每个颜色的back,取一个最小,然后再进行删除操作,有删除的同时,我们去找下一个颜色的最小值,直到全部消完。
2024-02-08 18:01:53 492
原创 牛客周赛 Round 31
思路:首先它是一道dp题(咱就是説一点没看出来,光贪了服。dp[i][j]表示前i个数,使得最终元素和为j的数量的最小值状态计算1:当前的数不乘-1-->dp[i][j]=min(dp[i][j],dp[i-1][j+x];当前的数乘-1-->dp[i][j]=min(dp[i][j],dp[i-1][j-x]+1);加上一次操作次数由于每一个x是-200~200的范围,他们最小达到了-40000,数组下标会越界,我们给二维统一加上一个偏移量#include//01背包。
2024-02-04 23:57:17 490 1
原创 2024牛客寒假算法基础集训营1(的部分题)(明天补
做法:这是一道贪心+二分的题,先贪心的让Smin先为最小,即排序让花费时间最少的先办事,前缀和再相加就是总Smin然后去二分插队位置,求Sc=Smin+tc*(n-mid+1)改变l和r就行int main()i<=n;i<=n;else l=mid;return 0;
2024-02-02 23:10:23 436
原创 牛客练习赛121
做法:把特殊情况特判了,然后看谁有可以连续取的机会谁就赢,因为1如果已经是必胜局面可以不用这次机会2如果是必败局面则用了这次机会就是必胜局面。
2024-01-26 23:10:26 245 1
原创 牛客周赛 Round 29
做法:我们可以手动模拟一下,1.若n--是奇数我们可以发现若排完序之后是 a b c d e f 去掉n/2左边的数的中位数是n/2+1,反之去掉n/2右边的数的中位数是n/22.若n--是偶数,若排完序之后为a b c d e (1)去掉n/2以其左边的对应中位数的和是n/2+1和n/2+2,(2)去掉n/2+1对应的中位数的和是n/2+n/2+2,(3)去掉n/2+1右边的对应中位数的和为n/2和n/2+1;double sum;int th,val;}a[N];int main()
2024-01-22 22:51:08 369
原创 Codeforces Round 913(Div.3)
做法:一般让求最大最小的东西都是二分答案,但是我们刚一拿到手这一题看不出来有什么二分性,不知道要落在那一步上,但是我们直接二分k,每次用这个k去维护一个区间,看每次的区间是否满足题目要求的区间,去对应更新k的值。
2024-01-22 18:14:53 324
原创 Pinely Round 3 (div.1+div.2)
做法:首先我们发现这是一个贪心问题,而且是不要求顺序的。我们可以找最小的区间长度,由小到大排序,依次乘c区间的大------>小,就解决了,要用适当的方法排序,为每一个b数组找一个最近的a数组对应的值。
2024-01-21 11:19:56 451
原创 cf 917 div2
做法:我们先看操作2,每次进行操作2我们可以发现我们最多只能得到1分可以自己看看,然后我们就想到,先给数组set一个,然后剩下的分数就是(d-1)/2。这样想是对的但是是考虑不周的因为数组可能是。这样得分要比上一个方法得分多,所以最后我们分二种情况讨论在这两种中取最大值即可。数组b只有10,我们可以先把数组变成。
2024-01-21 09:48:31 365
原创 Educational Codeforces Round 161 (Rated for Div. 2)
方法:从问题不难看出是一题贪心的题,首先我们应该预处理出来每一个城市到相邻城市的花费,可以开一个l[N]和r[N]表示当前城市到它左右两边的花费,然后再进行一遍前缀和,对于每个询问当ab应该输出l[b]-l[a]就好了。
2024-01-20 22:47:52 1791
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人