Codeforces 12D Ball 树形阵列模拟3排序元素

Codeforces 12D Ball 树形阵列模拟3排序元素

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

主题链接:点击打开链接

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 500005
#define ll int
ll n;
ll c[N], maxn;
inline ll lowbit(ll x){return x&(-x);}
void change(ll pos, ll val){
	while(pos)c[pos]=max(c[pos],val), pos-=lowbit(pos);
}
ll maxx(ll pos){
	ll ans = -1;
	while(pos<=maxn)ans = max(ans,c[pos]),pos+=lowbit(pos);
	return ans;
}
struct node{
	ll b[3],num;
}w[N];
bool cmp0(node x, node y){return x.b[0]<y.b[0];}
bool cmp1(node x, node y){return x.b[1]>y.b[1];}
int main(){
	ll i,j;
	while(cin>>n) {
		for(i=0;i<n;i++)scanf("%d",&w[i].b[0]);
		for(i=0;i<n;i++)scanf("%d",&w[i].b[1]);
		for(i=0;i<n;i++)scanf("%d",&w[i].b[2]);
		sort(w, w+n, cmp0);
		ll rank = 1;
		w[0].num = 1;
		for(i=1;i<n;i++) {
			if(w[i].b[0]==w[i-1].b[0])w[i].num = rank;
			else w[i].num = ++rank;
		}
		sort(w,w+n,cmp1);
		for(i=1;i<=rank;i++)c[i]=-1;
		maxn = rank;
		i = 0;
		ll ans = 0;
		while(i<n) {
			for(j = i; j < n && w[i].b[1] == w[j].b[1]; j++)
				if(maxx(w[j].num+1)>w[j].b[2])
					ans++;
			for(j = i; j < n && w[i].b[1] == w[j].b[1]; j++)
				change(w[j].num, w[j].b[2]);
			i = j;
		}
		cout<<ans<<endl;
	}
	return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117583.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 关于ASP.NET编程中,GridView表格无法执行RenderControl()方法的问题

    关于ASP.NET编程中,GridView表格无法执行RenderControl()方法的问题当GridView表格控件设置了“自动排序”时,其RenderControl()方法运行时会报错。 

  • Android hybrid_android混合开发

    Android hybrid_android混合开发关于混合开发常问道的问题:Android如何嵌套h5页面?h5一般调用哪些Android哪些接口功能?Android如何调用网页(js)功能?问题1.ndroid如何嵌套h5页面答案:当我们用vue开发完项目,执行nmprunbuild打包生产dist目录,如何嵌套在Android框架中创建网页存放文件夹,在Android工程res下面添加assets文件夹,把dist目录内容拷贝到assets下。找到Android项目中.xml布局文件,添加webview组件及设置web

  • gitlab docker安装_crawl用法

    gitlab docker安装_crawl用法1先给个干货crawlab的官方文档地址https://docs.crawlab.cn/Installation/Docker.htmlgithub说明地址https://github.com/crawlab-team/crawlab/blob/master/README-zh.md2两种安装方式一是通过dockerpull拉取,代码如下dockerpulltikazyq/crawlab:latest二是从github拉取代码,然后使用dockercompose命…

    2022年10月31日
  • C++的pair_pair的复数是什么

    C++的pair_pair的复数是什么1,pair的应用pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。pair的实现是一个结构体,主要的两个成员变量是firstsecond因为是使用struct不是class,所以可以直接使用pair的成员变量。其标准库类型–pair类……

    2022年10月16日
  • python生兔子问题(递归算法)_用python函数写斐波那契数列

    python生兔子问题(递归算法)_用python函数写斐波那契数列兔子产子1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子

  • NE问题分析

    一.crash(NE)问题1.找到堆栈信息一般堆栈在Androidlog或者tombstore里面,androidlog里面直接搜libsurfaceflinger或者surfaceflinger定位到log,SW-WDtombstore文件是系统在系统发生NE是抓到的堆栈信息,可能会包含多份文件,找的需要的即可2.解析堆栈backtrace信息,主要看调用栈,我们能从中得到发生问题的具体代码行号,比如:#01pc00000000000642fc/apex/com.android

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号