网络流/费用流 引用下题解:lyd:首先把区间端点离散化,设原来的数值i离散化后的标号是c[i]。这样离散化之后,整个数轴被分成了一段段小区间。 1.建立S和T,从S到离散化后的第一个点连容量K,费用0的边。离散化后的最后一个点到T连容量K、费用0的边。 2.离散化后的相邻点之间(从i到i+1)连....
分类:
其他好文 时间:
2015-03-19 08:51:45
阅读次数:
137
题意:给你一个xi,wi的点集合 ,问你其中最大的子集满足|xi - xj| >= wi + wj 的大小是多少。解题思路:dp+离散化+树状数组。把它看成是 一条边[xi-wi,xi+wi] 去覆盖区域就行了解题代码: 1 // File Name: d.cpp 2 // Author: da.....
分类:
其他好文 时间:
2015-03-18 20:06:36
阅读次数:
166
思路 之前知道这道题是用时代的眼泪划分树写的TAT好复杂我看不懂 然后主席就来拯救大家啦~\(≧▽≦)/~ 学了这么久还不会主席树QAQ今天才学的,又T又W的搞得我要死。。 然后学到了离散化的新写法,不需要用Map。。 基本思想就是针对[1,L]的每一个L开一个线段树,记录下[1,L]中每...
分类:
其他好文 时间:
2015-03-18 17:25:39
阅读次数:
178
树套树 Orz zyf 我的树套树不知道为啥一直WA……只好copy了zyf的写法TAT 这题还可以用CDQ分治来做……但是蒟蒻不会……//y坐标的树状数组是按权值建的……所以需要离散化…… 1 /**********************************************...
分类:
其他好文 时间:
2015-03-17 11:45:33
阅读次数:
160
对于求逆序数问题,学会去利用树状数组进行转换求解方式,是很必要的。一般来说我们求解逆序数,是在给定一串序列里,用循环的方式找到每一个数之前有多少个比它大的数,算法的时间复杂度为o(n2)。那么我们通过树状数组可以明显提高时间效率。我们可以按照排列的顺序依次将数字放入树状数组中,并依次更新预与之相关联...
分类:
编程语言 时间:
2015-03-15 00:41:29
阅读次数:
162
题意:
有n个段,编号1-n,每个段占据着a-b。 m个查询,查询c处所在的段中,长度最短的是几号段。如果没有段占据,输出-1。
首先把所有数字存在数组里,去离散化。然后把id按段的长度从长到短更新到树中。然后就查询固定的点在树中的ID的就行了。...
分类:
其他好文 时间:
2015-03-14 21:45:19
阅读次数:
119
题意:给出n对选手姓名,每对表示前者赢后者,求整场比赛是否有冠军;
思路:将名字用数字表示,离散化,然后就是裸裸的拓扑排序,只需判断初始时入度为0的是否唯一;
#include
#include
#include
using namespace std;
int n,m,i,j,k,con;
int mm[1001][1001],indegree[500010];
char s1[500010...
分类:
其他好文 时间:
2015-03-13 22:28:47
阅读次数:
242
题目地址:POJ3666
dp[i][j]表示第i位时,值为j时的最小代价。因为j太大,由于要改变值的话,变到与之最近的值相同是最优的,所以可以离散化,这样,j对应了各个值得下标。复杂度O(n^2)。
代码如下:#include
#include
#include
#include
#include <algorith...
分类:
其他好文 时间:
2015-03-13 10:58:05
阅读次数:
154
http://poj.org/problem?id=2299最初做离散化的时候没太确定可是写完发现对的---由于后缀数组学的时候,,这样的思维习惯了吧1、初始化as[i]=i;对as数组依照num[]的大小间接排序2、bs[as[i]]=i;如今bs数组就是num[]数组的离散化后的结果3、注意,树...
分类:
编程语言 时间:
2015-03-12 18:45:31
阅读次数:
187
首先将(x, y)变换为((x + y) / 2, (x - y) / 2)然后变成查询区间中位数的问题,把x, y分开做离散化完直接用主席树维护区间和 1 /************************************************************** 2 ...
分类:
其他好文 时间:
2015-03-11 00:26:10
阅读次数:
162