
分治
morejarphone
这个作者很懒,什么都没留下…
展开
-
POJ3714(分治)
题意是给你两堆点,求毎堆点各取一个的最近距离。给毎个点一个属于标记,然后合并的时候判断是不是属于不同的两堆点。#include #include #include using namespace std;#define maxn 211111#define INF 1e15struct node { double x, y; bool belong;} p[原创 2015-10-29 17:54:25 · 651 阅读 · 0 评论 -
HDU 5552 (CDQ分治 NTT)
题意:n个点有环连通图计数。每条边可以染成m种颜色。定义一些数组: 1. f[n]: n个点的原创 2016-09-04 16:04:31 · 1341 阅读 · 0 评论 -
HDU 5618 (CDQ分治 树状数组)
题目链接:点击这里题意:三维偏序,每个点求出三个坐标都小于等于他的点的个数。第三维排序后cdq分治,统计前一半对后一半的影响的时候按照第一位排序第二维树状数组维护。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>#include <map>using nam原创 2016-07-21 19:57:37 · 342 阅读 · 0 评论 -
HDU 5730 (CDQ分治 FFT)
题目链接:点击这里题意:给出i个连续格子的涂色方案, 求出涂n个格子的方案总数. FFT的经典运用,计算∑n−1i=1ai×bn−i\sum_{i=1}^{n-1}a_i\times b_{n-i}. 设dpidp_i表示涂i个格子的方案数, 显然dpn=∑ni=1an−i×dpidp_n=\sum_{i=1}^na_{n-i}\times dp_i. 然后就可以用CDQ分治, 在计算(l,r)原创 2016-07-25 15:09:21 · 830 阅读 · 0 评论 -
HDU 5324 (CDQ分治 树状数组)
题目链接:点击这里题意:三维偏序LIS的最小字典序答案。分治的时候逆着做就可以了。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>using namespace std;#define maxn 100005#define mod (1LL<<30)#d原创 2016-07-22 16:41:15 · 542 阅读 · 0 评论 -
HDU 4742 (CDQ分治 树状数组)
题目链接:点击这里题意:三维LIS。给出空间的n个点,求出最长的序列和方案数,要求序列的后一个点三个坐标都不小于前一个点。先排序掉一维,然后剩下两维分治, 用一个带长度和方案数的结构体树状数组维护。“`C++include include include include include include using namespace std;define maxn 100005define mod原创 2016-07-22 10:50:09 · 1041 阅读 · 0 评论 -
HDU 5690 (分治 || 循环节)
All XTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 468 Accepted Submission(s): 216Problem DescriptionF(x,m) 代表一个全是由数字x组成的m位原创 2016-05-21 20:30:44 · 467 阅读 · 0 评论 -
POJ2114(树分治)
题意是给一棵最多1W个节点的树,求是否存在点对使得他们的路径是k。类似于POJ的1741,修改下统计函数就可以了。注释掉的是一开始写的,很挫卡卡过,改掉以后效率好了一点。#include #include #include #include #include using namespace std;#define maxn 111111#define maxm 211111#d原创 2015-10-30 15:57:59 · 393 阅读 · 0 评论 -
POJ1741(树分治)
#include #include #include #include #include using namespace std;#define maxn 11111#define maxm 21111#define INF 11111111#define size Sizestruct node { int from, to, next, w;}edge[maxm原创 2015-10-29 23:28:39 · 365 阅读 · 0 评论 -
POJ1987(树分治)
k的值很大答案应该用long long。#include #include #include #include #include using namespace std;#define maxn 111111#define maxm 211111#define INF 11111111#define size Sizestruct node { int from,原创 2015-10-30 00:39:39 · 293 阅读 · 0 评论 -
HDU1007(分治)
题意是给你n个点,要扔一个圆,在任何情况这个圆都不能覆盖两个以上的点。求这个圆的最大半径。这个最大直径就是最近的点对距离的一半。算法导论讲的很详细也给出了正确性的证明。#include using namespace std;#define maxn 111111#define INF 1e15struct node { double x, y;} p[maxn], t原创 2015-10-29 16:52:19 · 403 阅读 · 0 评论 -
HDU 5896 (CDQ分治 NTT)
题目链接:点击这里题意:求n个点的有环图。作为出题人已经被全国acmer翔都喷出来了T.T 题面显示的版本是初始版本,大概时限需要开到10s左右,HDU的管理员表示服务器要受不了让我们改数据,于是把2e5->2e4,然后也就不需要至多一组大于1000这样的话了。结果中间过程出现了某种不可描述的错误导致题面还是古老版本的题面,于是出现了喜闻乐见的二分判数据,各种黑科技压时间的情况。表示抱歉~~~~相原创 2016-09-19 23:17:10 · 1279 阅读 · 3 评论