分治
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【CF 526F】【奇袭】
题目大意给出一个n*n的图,有n个点,每行每列有且仅有一个点,求有多少个k*k矩形中有k个点。解题思路可以发现按x坐标把点排序后得出一个排列,求有多少个区间长度等于最大值减最少值。可以考虑分治,可以算出中心到左右区间的最大最小值,若最大最小值在同侧则可以枚举一端算出另一端再判断是否合法。若不同侧可以发现左最大右最小时r-l==max[l]-min[r],即l+max[l]==r+min[r],相互独原创 2016-08-16 22:45:37 · 598 阅读 · 0 评论 -
【jzoj4756】【幻象】
题目大意每秒他的思绪中都有一定的概率浮现出奇异的幻象,持续x秒的幻象将产生 x^2的幻象值。他想知道,在N秒内他期望产生的幻象值是多少。解题思路设L[i]为第i秒幻象的持续时间的期望.显然L[i]= (L[i-1] + 1) * a[i]%设f[i]表示前i秒的答案f[i] = f[i-1] + ((L[i-1] + 1)2–L[i-1]2) * a[i]%时间复杂度为O(N)这里提供一个nlogn原创 2016-09-05 20:37:40 · 381 阅读 · 0 评论 -
【jzoj4715】【树上路径】【树】【分治】【点分治】
题目大意给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E。(k为路径p上的边的权值和)解题思路点分治,求出所有点到当前重心的距离以及所属的子树,排序后扫描并用不同子树的点更新答案,然而我的做法很暴力,很有可能超时,但随机数据下表现良好,应该有更好的方法。暴力code#include<set> #include<cmath> #include<cstdio> #include原创 2016-09-06 16:25:14 · 366 阅读 · 0 评论 -
【jzoj5231】【NOIP2017模拟A组模拟8.5】【序列问题】 【分治】
题目大意解题思路考虑分治,统计跨国分治中心的区间的答案,从左到右枚举右端点,维护第一个左端点到分治中心max比分治中心到右端点大的位置,同理维护min,同时维护对答案的贡献即可。code#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define LF double #define LL long lon原创 2017-08-05 17:35:04 · 625 阅读 · 0 评论