博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dbzoj#3188. [Coci 2011]Upit
阅读量:5159 次
发布时间:2019-06-13

本文共 1480 字,大约阅读时间需要 4 分钟。

写道数据结构练练手哈哈哈

Cigb5j.gif

// It is made by XZZ#include
#include
#include
#include
#define il inline#define rg register#define vd void#define sta static#define pr pair
typedef long long ll;using namespace std;il char gc(){ const int B=10000000;static char b[B+1],*p=b+B; if(p==b+B)b[fread(b,1,B,stdin)]=0,p=b; return *p?*p++:0;}il int gi(){ rg int x=0;rg bool flg=0;rg char ch=gc(); while(ch<'0'||ch>'9'){if(ch=='-')flg=1;ch=gc();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=gc(); return flg?-x:x;}const int maxn=100001<<1;int rt,ls[maxn],rs[maxn],ran[maxn],siz[maxn],n,m;ll sum[maxn],w[maxn],tga[maxn],tgb[maxn],tgc[maxn];bool tgd[maxn];il vd Set(int&x,ll y){if(x)w[x]=y,sum[x]=siz[x]*y,tgd[x]=1,tgc[x]=y,tga[x]=tgb[x]=0;}il vd Adda(int&x,ll y){if(x)w[x]+=y*(siz[ls[x]]+1),sum[x]+=y*(1+siz[x])*siz[x]/2,tga[x]+=y;}il vd Addb(int&x,ll y){if(x)w[x]+=y,sum[x]+=siz[x]*y,tgb[x]+=y;}il vd down(int&x){ if(!x)return; if(tgd[x])tgd[x]=0,Set(ls[x],tgc[x]),Set(rs[x],tgc[x]); if(tga[x])Adda(ls[x],tga[x]),Adda(rs[x],tga[x]),Addb(rs[x],tga[x]*(siz[ls[x]]+1)),tga[x]=0; if(tgb[x])Addb(ls[x],tgb[x]),Addb(rs[x],tgb[x]),tgb[x]=0;}il vd upd(int&x){ if(!x)return; down(ls[x]),down(rs[x]); siz[x]=siz[ls[x]]+siz[rs[x]]+1,sum[x]=sum[ls[x]]+sum[rs[x]]+w[x];}il int merge(int x,int y){ if(x==0||y==0)return x|y; if(ran[x]

转载于:https://www.cnblogs.com/xzz_233/p/8762669.html

你可能感兴趣的文章
任务49:Identity MVC:Model前端验证
查看>>
标准C++常用头文件及描述
查看>>
单调栈与单调队列
查看>>
Linr PS toolkit(Photoshop开发人员辅助工具)(转载)
查看>>
discuz 抱歉,该附件无法读取的解决方法
查看>>
spring mvc+mybatis+多数据源切换
查看>>
[转]SHSH, APTicket以及iOS降級
查看>>
python中的魔法属性
查看>>
lodash camelCase 驼峰写法
查看>>
一分钟了解负载均衡的一切,学习学习
查看>>
介绍网络课程给大家
查看>>
如何:声明、实例化和使用委托(C# 编程指南)
查看>>
C# SpeechSynthesizer 使用
查看>>
leetcode roman to integer
查看>>
心急的C小加
查看>>
邻接矩阵,邻接表
查看>>
javaweb 程序一会能操作一会不能操作,一会能连上数据库一会不能!!!
查看>>
分布式文件系统HDFS 练习
查看>>
编译原理 First,Follow,select集求法
查看>>
maven package跳过测试
查看>>