题解:

左偏树模板题目

每一次合并,删除最大,修改最大

都是基本操作

代码:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int M=,N=;
int T,n,m,p[M],root[M],v1=,v0=,c[N][],dist[N],val[N],cnt;
void makeheap(int x,int v)
{
c[x][]=c[x][]=dist[x]=;
val[x]=v;
}
int merge(int x,int y)
{
if (!x||!y)return x+y;
if (val[x]<val[y])swap(x,y);
c[x][]=merge(c[x][],y);
if (dist[c[x][]]>dist[c[x][]])swap(c[x][],c[x][]);
dist[x]=dist[c[x][]]+;
return x;
}
void ps(int &x){x=merge(c[x][],c[x][]);}
void change(int &x,int v)
{
int k=merge(c[x][],c[x][]);
makeheap(x,v);
x=merge(x,k);
}
int main()
{
scanf("%d",&T);
while (T--)
{
cnt=;
scanf("%d%d",&n,&m);
for (int i=;i<=m;i++)scanf("%d",&p[i]);
memset(root,,sizeof root);
for (int i=;i<=m;i++)
for (int j=,x;j<=p[i];j++)
{
scanf("%d",&x);
makeheap(++cnt,x);
root[i]=merge(root[i],cnt);
}
int x[],rt[];
memset(rt,,sizeof rt);
memset(x,,sizeof x);
for (int i=;i<=n;i++)
{
char s[];
int a;
scanf("%s",&s);
if (s[]=='T')
{
scanf("%d",&a);
rt[i&]=merge(rt[i&],root[a]);
x[i&]+=p[a];
}
if (s[]=='C')
{
if (val[rt[]]==val[rt[]])continue;
if (val[rt[]]>val[rt[]])
{
x[]+=x[];
x[]=;
rt[]=merge(rt[],rt[]);
rt[]=;
}
else
{
x[]+=x[];
x[]=;
rt[]=merge(rt[],rt[]);
rt[]=;
}
}
if (s[]=='L')
{
ps(rt[i&]);
x[i&]--;
}
if (s[]=='A')
{
scanf("%d",&a);
change(rt[i&],val[rt[i&]]+a);
}
if (s[]=='E')
{
scanf("%d",&a);
change(rt[i&],a);
}
}
printf("%d:%d\n",x[],x[]);
if (x[]>=x[])v1++;
else v0++;
}
if (v1<v0)puts("I will be back!!");
else puts("Hahaha...I win!!");
return ;
}

hdu3031的更多相关文章

  1. HDU3031 To Be Or Not To Be 左偏树 可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3031 题意概括 喜羊羊和灰太狼要比赛. 有R次比赛. 对于每次比赛,首先输入n,m,n表示喜羊羊和灰 ...

随机推荐

  1. Jscript运行时错误:没有权限

    问题:我在页面A中放了一个iframe ,然后在iframe 的子页面中调用主页面中的JavaScript函数,结果报错Jscript运行时错误:没有权限 原因有2: 1. 是逻辑错误,比如先关闭了i ...

  2. android 错误收集

    2. is not translated in Eclipse > Preference > Android > Lint Error Checking的Correctness: M ...

  3. MySQL的redo log结构和SQL Server的log结构对比

    MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...

  4. Openstack(五)Memcache- repcached集群

    5.1.1下载Memcache- repcached并解压 # wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repc ...

  5. redhat 5 samba配置

    1.检查安装包 #rpm –qa | grep samba 必须有以下安装结果 samba-3.0.25:samba-common-3.0.25:samba-client-3.0.25:samba-s ...

  6. 系统管理命令之who

    作为一名系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上.必须严密监视我们的服务器.但是,我们当然不可能一天24小时都盯着系统.在linux系统中,我们可以使用who命令查看登录者信息. ...

  7. poj1329 Circle Through Three Points

    地址:http://poj.org/problem?id=1329 题目: Circle Through Three Points Time Limit: 1000MS   Memory Limit: ...

  8. FTRL与Online Optimization

    1. 背景介绍 最优化求解问题可能是我们在工作中遇到的最多的一类问题了:从已有的数据中提炼出最适合的模型参数,从而对未知的数据进行预测.当我们面对高维高数据量的场景时,常见的批量处理的方式已经显得力不 ...

  9. ng-深度学习-课程笔记-3: Python和向量化(Week2)

    1 向量化( Vectorization ) 在逻辑回归中,以计算z为例,$ z =  w^{T}+b $,你可以用for循环来实现. 但是在python中z可以调用numpy的方法,直接一句$z = ...

  10. 528. Random Pick with Weight

    1. 问题 给定一个权重数组w,w[i]表示下标i的权重,根据权重从数组中随机抽取下标. 2. 思路 这道题相当于 497. Random Point in Non-overlapping Recta ...