首页 > 其他分享 >[POI2015] LOG

[POI2015] LOG

时间:2024-02-20 12:22:08浏览次数:25  
标签:opt LOG get int sum long POI2015 fa

点击查看代码
#include <bits/stdc++.h>
using namespace std;
int a[1000005];
int root,tot;
int read1()
{
	char cc=getchar();
	while(!(cc>=48&&cc<=57))
	{
		if(cc=='-')
		{
			break;
		}
		cc=getchar();
	}
	bool f=false;
	int s=0;
	if(cc=='-')
	{
		f=true;
	}
	else
	{
		s=cc-48;
	}
	while(1)
	{
		cc=getchar();
		if(cc>=48&&cc<=57)
		{
			s=s*10+cc-48;
		}
		else
		{
			break;
		}
	}
	if(f==true)
	{
		s=-s;
	}
	return s;
}
struct t1
{
	int fa,s[2],size,cnt;
	long long v,sum;
}t[1000005];
void New(int va)
{
	tot++;
	t[tot].size=t[tot].cnt=1;
	t[tot].v=t[tot].sum=va;
}
int get(int x)
{
	return x==t[t[x].fa].s[1];
}
void maintain(int x)
{
	t[x].size=t[t[x].s[0]].size+t[t[x].s[1]].size+t[x].cnt;
	if(x>2)
	{
		t[x].sum=t[t[x].s[0]].sum+t[t[x].s[1]].sum+t[x].v*t[x].cnt;
	}
}
void rotate(int x)
{
	int y=t[x].fa,z=t[y].fa,opt=get(x);
	t[y].s[opt]=t[x].s[opt^1];
	if(t[x].s[opt^1])
	{
    	t[t[x].s[opt^1]].fa=y;
    }
	t[x].s[opt^1]=y;
	t[y].fa=x;
	t[x].fa=z;
	if(z)
	{
		t[z].s[y==t[z].s[1]]=x;//此时y的父亲节点已经发生改变,因而不能应用get函数 
	}
	maintain(y);
	maintain(x);
}
void Splay(int x,int k)
{
	while(t[x].fa!=k)
	{
		int y=t[x].fa,z=t[y].fa;
		if(z!=k)
		{
			if(get(x)==get(y))
			{
				rotate(y);
			}
			else
			{
				rotate(x);
			}
		}
		rotate(x);
	}
	if(k==0)
	{
		root=x;
	}
}
void Insert(int va)
{
	int x=root,fa,opt;
	while(x!=0)
	{
		if(va<t[x].v)
		{
			fa=x;
			x=t[x].s[0];
			opt=0;
		}
		else if(va==t[x].v)
		{
			t[x].cnt++;
			maintain(x);
			break;
		}
		else
		{
			fa=x;
			x=t[x].s[1];
			opt=1;
		}
	}
	if(x==0)
	{
		New(va); 
		x=tot;
		t[fa].s[opt]=x;
		t[x].fa=fa;
	}
	Splay(x,0);
}
void Delete(int va)
{
	int x=root;
	while(x!=0)
	{
		if(va<t[x].v)
		{
			x=t[x].s[0];
		}
		else if(va==t[x].v)
		{
			t[x].cnt--;
			maintain(x);
			break;
		}
		else
		{
			x=t[x].s[1];
		}
	}
	Splay(x,0);
}
//不需要真的把它删除呀,把它的个数设为0就好了 
long long ask(long long va)
{
	Insert(va);
	long long ans=t[t[root].s[1]].sum-(t[t[root].s[1]].size-1)*va;
	Delete(va);
	return ans;
}
int main()
{
	int n,m;
	cin>>n>>m;
	New(INT_MIN),New(INT_MAX);
	t[0].size=t[0].sum=0;
	t[1].s[1]=2;
	t[1].size=2;
	root=1;
	t[2].fa=1;
	t[1].sum=t[2].sum=0;
	long long sum=0;
	for(int i=1;i<=m;i++)
	{
		char opt;
		long long u,v;
		cin>>opt;
		u=read1();
		v=read1();
		if(opt=='U')
		{
			if(a[u]!=0)
			{
				Delete(a[u]);
			}
			if(v!=0)
			{
				Insert(v);
			}
			sum-=a[u];
			a[u]=v;
			sum+=v;
		}
		else
		{
			long long tmp=sum-ask(v);
			if(tmp>=u*v)
			{
				puts("TAK");
			}
			else
			{
				puts("NIE");
			}
		}
	}
	return 0;
}

标签:opt,LOG,get,int,sum,long,POI2015,fa
From: https://www.cnblogs.com/watersail/p/18022834

相关文章

  • 修改标签官网自带css——dialog
    对于标签原本自带的class类就如下图的.el-dialog__body就是自带的原dialog:现在若要更改padding值方式一(但是修改的是全局的了):<style>.el-dialog__body{padding:15px;}</style>方式二(给dialog加一个自定义类名,修改的是所有class匹配的el-dia......
  • docker login 私有仓库harbor 502 Bad Gateway的报错
    具体报错:Logindidnotsucceed,error:Errorresponsefromdaemon:loginattempttohttp://harbor.com/v2/failedwithstatus:502BadGateway其实harbor在网页端是可以登录的,但是dockerlogin-uadmin-p1harbor.oldboyedu.com的时候依旧是提示报错的一般这种报错......
  • 03 进阶篇-高阶数据类型BitMaps、HyperLogLogs
    BitMaps介绍BitMaps的基本概念,它是一种通过位来表示数据的方法,能高效地处理大量布尔值。展示BitMaps在用户在线状态、统计等方面的应用示例。介绍相关的命令,如SETBIT,GETBIT,BITCOUNT,BITOP等。BitMaps的基本概念BitMaps,或称为位图,是Redis中用于高效处理大量布尔值的......
  • FileZilla 服务器 报Warning: FTP over TLS is not enabled, users cannot securely l
    FileZilla服务器报Warning:FTPoverTLSisnotenabled,userscannotsecurelylogin.1.登录至FTP服务器 2.选择编辑->设置->SSL/TLS设置->。。。。。[看图操作],注:证书导出路径不能有中文字符 3.选择编辑->设置->SSL/TLS设置->选择上一步操作导出的证书,注意导出......
  • Log4j2 JNDI注入漏洞
    2021年一个log4j2的JNDI注入漏洞轰动中外,因为其影响力非常大并且使用门槛比较低。Log4j2并不是一个服务,只是java一个记录日志的类库,但是java中用来记录日志的库本就没几个。所以使用非常广形成原因是log4j2使用一个Lookups的机制,也就是记录日志的时候会嵌入用户输入数据。这个Loo......
  • Splunk ES 接入 log 的方式
    SplunkES接入log的方式主要有两种:使用SplunkUniversalForwarder(UF)UF是一个轻量级的代理,可以安装在各种操作系统和设备上。它可以收集各种类型的日志文件,并将它们发送到SplunkES进行索引和分析。使用HTTPEventCollector(HEC)HEC是一个RESTfulAPI,可以......
  • 《Boosting Document-Level Relation Extraction by Mining and Injecting Logical Ru
    代码原文地址摘要文档级关系抽取(DocRE)旨在从文档中抽取出所有实体对的关系。DocRE面临的一个主要难题是实体对关系之间的复杂依赖性。与大部分隐式地学习强大表示的现有方法不同,最新的LogiRE 通过学习逻辑规则来显式地建模这种依赖性。但是,LogiRE需要在训练好骨干网络之后,......
  • weblogic
    1.弱口令weblogic后台地址:ip:7001/console常用弱口令:system:passwordweblogic:weblogicadmin:secruityjoe:passwordmary:passwordsystem:sercuritywlcsystem:wlcsystemweblogic:Oracle@1232.任意文件上传漏洞(CVE-2018-2894)[部署war包,getshell]漏洞原理:Weblogic管理端未授权......
  • kali开机时间巨长,logo画面处卡住。(调整交换分区后)
    目前大致方法有2方法1链接地址方法2链接地址......
  • dotnet-cnblog tool 测试案例
    这是测试donet-cnblog工具是否能将正常的Typora图片转换为博客园格式测试1:本地图片导入测试2:QQ截图测试3:urlhttps://pics3.baidu.com/feed/9345d688d43f8794105499b2ead60ef819d53ad8.jpeg@f_auto?token=d70fe4868ac1356d70833be721199be3结论成功!!!随后整理出自己的实践......