摘要: 嘟嘟嘟hdu 嘟嘟嘟vjudge 我连这么简单的分治题都不会呀……菜死了 一不小心就把算法说出来了。 对于一段区间$[L, R]$,我们要求出这个区间中所有的长度的子区间的答案。 解法很暴力:先$O(n)$找出最小值所在位置$pos$,然后在$[L, pos]$中枚举一遍最大值去更新$temp[po 阅读全文
posted @ 2018-11-27 20:06 mrclr 阅读(138) 评论(0) 推荐(0) 编辑
摘要: "嘟嘟嘟" 是个狠题…… 首先,差分得到数组$d$。 这样每一次的操作相当于$d_i++$和$d_j $。然后问最少的操作次数是数组$d$全是$0$. 很显然每一次可以往一个负数上$++$,往一个正数上$ $。令$ans1$为负数和,$ans2$为正数和,则把所有的负数或正数变成$0$需要操作$mi 阅读全文
posted @ 2018-11-27 16:26 mrclr 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟spoj 嘟嘟嘟vjudge 嘟嘟嘟luogu 这个数据范围都能想到是折半搜索。 但具体怎么搜呢? 还得扣着方程模型来想:我们把题中的两个相等的集合分别叫做左边和右边,令序列前一半中放到左边的数为$a$,右边的数为$b$,后一半同理为$c$和$d$。则我们要找的就是满足$a + c = b + 阅读全文
posted @ 2018-11-27 15:43 mrclr 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这个数据范围显然是折半搜索。 把序列分成两半,枚举前一半的子集,存下来。然后再枚举后一半的子集,二分查找。 细节: 1.最优解可能只在一半的子集里,所以枚举的时候也要更新答案。 2.对于当前结果$tot$,二分查找$-tot$的时候要把$-tot$两边的元素都和$tot$加起来试一下,而不是 阅读全文
posted @ 2018-11-27 11:47 mrclr 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 题面我是不会咕的(没有真香):有$n(n \leqslant 25)$个任务和三个人,每次任务给出每个人能得到的值,每次任务选两个人,使$n$个任务结束后三个人得到的值是一样的,且尽量大。输出每次要派哪两个人,如果不行输出$Impossible$。 暴力是$O(3 ^ {25})$,必定过不 阅读全文
posted @ 2018-11-27 09:30 mrclr 阅读(222) 评论(0) 推荐(0) 编辑