摘要: 题面 题外话:我的实数二分有什么问题=。= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的数则可行。推式子 在减去二分出的$mid$之后,设切掉$[l,r]$,数列的总和为$tot$ $su 阅读全文
posted @ 2018-09-19 22:10 Speranza_Leaf 阅读(198) 评论(0) 推荐(0)
摘要: 题面 比较明显地能看出二分来,但是检查函数很难写。对于二分出的一个$mid$,我们要让它满足在$m$次操作内令序列中存在一个为零的位置,同时使得任意相邻的两项之差不超过$mid$ 第二项的检查比较好做,我们正反各扫一遍然后把扫到的上一个数对当前数与$mid$之差取最小值,就是满足条件的最小代价 对于 阅读全文
posted @ 2018-09-19 22:05 Speranza_Leaf 阅读(179) 评论(0) 推荐(0)
摘要: 题面 题外话:LYD说他当时看错题了,考场爆零了,然后有了作诗这道题=。= 离线处理询问,按右端点递增排序,然后对于每种花$flw[i]$,我们求一个$pre[flw[i]]$表示这种花上一次出现的位置。那么扫描每一朵花,然后一个询问右端点的花出现的贡献就是使得$[pre[pre[i]]+1,pre 阅读全文
posted @ 2018-09-19 21:50 Speranza_Leaf 阅读(121) 评论(0) 推荐(0)
摘要: 题面 差分原数列得到差分数组$dif$,这样对于$dif[2]->dif[n]$会多出来两个“空位置”$1$和$n+1$。然后区间加减就变成了使一个位置$+1$,另一个位置$-1$(可以对“空位置”操作)。 那么第一问的答案就是差分数组中$dif[2]->dif[n]$中正数的和$sum1$和负数和 阅读全文
posted @ 2018-09-19 21:29 Speranza_Leaf 阅读(128) 评论(0) 推荐(0)
摘要: 题面 从零开始的DP学习系列之贰(我的DP真的就这么烂TAT) 设DP状态的另一个技巧,考虑题目中有关答案的各种信息 然后这种和结尾有关系的$dp$可以考虑向前找结尾来转移 设$dp[i][j]$表示到第$i$天为止,有$j$天有奶牛逃跑的最小不一致记录数。转移时枚举天数和逃跑天数,然后枚举一个前一 阅读全文
posted @ 2018-09-19 21:17 Speranza_Leaf 阅读(322) 评论(0) 推荐(0)
摘要: 题面 题外话:从零开始的DP学习系列之壹(我真的不是在装弱,我DP真的就这么烂TAT) 从lyd那里学到了一点DP的小技巧,在设状态时可以先假装自己在做搜索,往一个函数里传了一些参数,然后把这些参数抓出来放在状态里就好了=。= 设$dp[i][j][k][h]$表示处理完前$i$个物品,$A$还剩下 阅读全文
posted @ 2018-09-19 21:10 Speranza_Leaf 阅读(149) 评论(0) 推荐(0)
摘要: 题面 第一次写线段树合并 因为最后只有一次询问,所以树上差分,动态开点权值线段树维护,主要说线段树合并的部分 (Zhang_RQ式线段树合并) 1.有一个节点为空则返回另一个 2.合并信息 3.分别用两个节点的左右儿子和左右区间合并出新节点的左右儿子 4.pushup 注意只有当一个点的最大值不为零 阅读全文
posted @ 2018-09-19 08:41 Speranza_Leaf 阅读(196) 评论(0) 推荐(0)
摘要: 禁止DP,贪心真香 有一个比较明显的贪心思路是让每个人和距离为$2$(隔着一个人)的人尽量用一样的,这样只需要扫一遍然后对每对相邻的人之和取最大值即可。但是当人数为奇数时这样就会出锅,因为最后一个人和第一个人是“一套”的勋章(意会一下),解决方法是将答案再对这样的一个东西取$max$ $\left 阅读全文
posted @ 2018-09-19 07:51 Speranza_Leaf 阅读(229) 评论(0) 推荐(0)