- 博客(7)
- 收藏
- 关注
原创 Atcoder Beginner Contest372
要求构造一个序列,∑N3Ai=M,我们可以不断的拆解m,来构造,每次寻找一个>=m的值,它的次方为p,如果!=m,则p减一,然后当m小于3时,我们可以分类讨论,m=1和2的情况。我们用dfs深搜,采用分冶的方法,如果最大值的下标不是r,那么在(l,r]之间有更大值。要求删除'.',我们可以直接扫描,将非’.‘的字符存进一个的新的字符串,然后进行输出。因此我们可以使用栈,如果此元素大于栈顶,那么栈顶元素的贡献就结束了,可以弹出,,从最后开始每个元素都将在它前面最接近的大于他的值之间的元素贡献1,
2024-09-23 23:38:41 244
原创 训练日志9.19
按照右端点进行排序,然后扫描要求区间的右端点,然后进行修改线段树,如果这个数之前出过,则减掉,并同时记录此时的区间的结果。这题主要是写的莫队的,但是可能数据加强了过不了(变形)(还有树状数组和分块的写法应该差不多,留到下次写)按照书上的写法写的,主要是为了搞下莫队。
2024-09-20 00:39:59 180
原创 训练日志9.18
也是一道板子题,之前写的时候用的是yxc的差分数组的方法,然后今天写了一下,但是没有用差分,直接原数加上修改值也是可以的。一道板子题,统计v和^的个数,每个点可能是v的尖,也可能 是^的尖。所以我们可以统计一下一个点左边和右边分别有多少大于小于它的,然后每个点的构成方案数为左边小(大)*右边小(大);好久没写树状数组了,回忆一下。
2024-09-19 00:01:20 162
原创 训练日志9.13
这题给的数据范围很大,所以首先要离散化,然后用前缀和优化,超了,然后题解要用了预处理,还是太菜了,调了几个小时没调出来qwq,感觉代码细节上有问题,等过几天再写一下qwq。今天学了一下分块,维护中间的块,然后两边的零散的暴力一下.分块的板子题,主要简单维护一下中间的块。代码就不贴了,下次吧。
2024-09-13 23:57:14 234
原创 训练日志9.11
最后只询问第q位上的数,这个数是全排列中的数,有单调性,所以可以用二分答案,将大于等于mid的设为1,小于mid的设为0。在进行m将排序后,如果第q位为1,则在[mid,r]中查找,如果第q位为0,则在[l,mid)中查找。我感觉这题主要难点在于将普通序列的排序转换成用01序列排序,用线段树维护01序列。今天就写了这一题线段树+二分,qwq。
2024-09-12 00:54:35 191
原创 训练日志9.10
这题可以利用贪心的思想,按照报废时间进行排序,当超过报废时间的时候,可以删除修理时间最长的建筑,留更多的时间给其它建筑。用一个堆来维护n个数,用朴素做法会超时,根据单调不降序序列的性质,当xi+yi大于堆顶的时候,可以结束此次循环。
2024-09-10 23:41:33 350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人