解题报告
题意:
一根长度8000的线段上染色,求染完之后,每个颜色在线段上有多少个间断的区间。
思路:
区间问题用线段树,成段的更新区间,最后把所有的区间下压到叶子结点,统计叶子结点的颜色。
#include
#include
#include
using namespace std;
int lz[32000],_hash[10000],color[10000],cnt;
v...
分类:
其他好文 时间:
2014-08-11 06:19:21
阅读次数:
258
解题报告
题意:
求逆序数。
思路:
线段树离散化处理。
#include
#include
#include
#include
#define LL long long
using namespace std;
LL sum[2001000],num[501000],_hash[501000];
void push_up(int rt)
{
sum[rt]=sum[rt...
分类:
其他好文 时间:
2014-08-11 00:22:01
阅读次数:
255
解题报告
题目传送门
题意:
意思很好理解。
思路:
每次操作是100000次,数据大小100000,又是多组输入。普通模拟肯定不行。
线段树结点记录区间里存在数字的个数,加点删点操作就让该点个数+1,判断x存在就查询[1,x]区间的个数和[1,x-1]的个数。
求x之后第k大的数就先确定小于x的个数t,第t+k小的数就是要求的。
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-10 21:34:50
阅读次数:
303
解题报告
题意:
原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和。
思路:
线段树成段更新,区间去和。
#include
#include
#include
using namespace std;
int sum[500000],lz[500000];
void push_up(int root,int l,int r)
{
sum[root]=sum...
分类:
其他好文 时间:
2014-08-09 11:39:47
阅读次数:
343
解题报告
题意:
略
思路:
线段树成段更新,区间求和。
#include
#include
#include
#define LL long long
#define int_now int l,int r,int root
using namespace std;
LL sum[500000],lazy[500000];
void push_up(int root,int l,...
分类:
其他好文 时间:
2014-08-09 00:18:46
阅读次数:
470
解题报告
题意:
略
思路:
单点更新,区间乘积。
#include
#include
#include
#define LL long long
using namespace std;
LL mul[501000];
void update(int root,int l,int r,int p,int v)
{
int mid=(l+r)/2;
if(l==r)...
分类:
其他好文 时间:
2014-08-08 08:29:05
阅读次数:
239
解题报告
题意:
求区间内最大值和最小值的差值。
思路:
裸线段树,我的线段树第一发。
#include
#include
#include
#define inf 99999999
#define LL long long
using namespace std;
LL minn[201000],maxx[201000];
void update(LL root,LL l,LL...
分类:
其他好文 时间:
2014-08-07 23:16:35
阅读次数:
282
解题报告
题意:
略
思路:
线段树单点增减和区间求和。
#include
#include
#include
#define LL long long
using namespace std;
int sum[201000];
void update(int root,int l,int r,int p,int v)
{
int mid=(l+r)/2;
if(l...
分类:
其他好文 时间:
2014-08-07 23:11:02
阅读次数:
378
解题报告
题意:
略
思路:
单点替换,区间最值
#include
#include
#include
#define inf 99999999
using namespace std;
int maxx[808000];
void update(int root,int l,int r,int p,int v)
{
int mid=(l+r)/2;
if(l==...
分类:
其他好文 时间:
2014-08-07 23:09:25
阅读次数:
256