当前位置: 首页 > news >正文

Codeforces Round #261 (Div. 2) D 树状数组应用

看着题意:[1,i]中等于a[i]的个数要大于[,jn]中等于a[j]的个数 且i<j,求有多少对这种(i,j)  ,i<j可是 i前面的合法个数 要大于j后面的 看起来非常像逆序数的样子,所以非常easy往树状数组想去,可是处理就看个人了,像我比赛的时候就处理得非常的麻烦,虽做出了可是花时间也多,经过杰哥的教育,事实上正着塞进树状数组 反着来找就能够了,灰常的简单清晰明了,贴一发纪念我的搓比...


int n;

int aa[1000000 + 55];
int bb[1000000 + 55];

int c[1000000 + 55];

map<int ,int >	mp;

ll lowbit(ll x) {
	return x&(-x);
}

void add(int i,int val) {
	while(i <= n) {
		c[i] += val;
		i += lowbit(i);
	}
}

ll get_sum(int i) {
	ll sum = 0;
	while(i) {
		sum += c[i];
		i -= lowbit(i);
	}
	return sum;
}

void init() {
	memset(c,0,sizeof(c));
	memset(aa,0,sizeof(aa));
	memset(bb,0,sizeof(bb));
	mp.clear();
}

int main() {
	while(scanf("%d",&n) == 1) {
		init();
		for(int i=1;i<=n;i++)scanf("%d",&aa[i]);
		for(int i=1;i<=n;i++) {
			mp[aa[i]]++;
			bb[i] = mp[aa[i]];
			add(bb[i],1);
		}
		mp.clear();
		ll ans = 0ll;
		for(int i=n;i>=1;i--) {
			add(bb[i],-1);
			mp[aa[i]]++;
			int tmp = mp[aa[i]];
			ans += i - get_sum(tmp) - 1;
		}
		cout<<ans<<endl;
	}
	return 0;
}


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标...
  • String,StringBuffer与StringBuilder的差别??
  • jsp+servlet 分页笔记
  • web 开发之js---js 实现地址栏的表单提交加密编码
  • Java操作mongoDB2.6的常见API用法
  • HTMLHelper
  • 微软公有云魅力之Websites
  • 多视图控制器 (一个界面需要多个tableview CollectionView时)
  • 猜数字
  • SQL Server 触发器
  • 微信支付开发(1) JS API支付
  • crontab简单使用
  • 【递归】全排列
  • 封装短信猫,dell类库生成,在vs2008中创建类库项目.并在mobilesp中建立pulbic类型的gms类....
  • [翻译] GiFHUD
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • canvas 五子棋游戏
  • canvas绘制圆角头像
  • CSS 三角实现
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript设计模式之工厂模式
  • Js基础知识(一) - 变量
  • k8s 面向应用开发者的基础命令
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Solarized Scheme
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 服务器之间,相同帐号,实现免密钥登录
  • 复杂数据处理
  • 搞机器学习要哪些技能
  • 给初学者:JavaScript 中数组操作注意点
  • 诡异!React stopPropagation失灵
  • 漂亮刷新控件-iOS
  • 使用common-codec进行md5加密
  • 译自由幺半群
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • ######## golang各章节终篇索引 ########
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #FPGA(基础知识)
  • #QT项目实战(天气预报)
  • ${factoryList }后面有空格不影响
  • (16)Reactor的测试——响应式Spring的道法术器
  • (PADS学习)第二章:原理图绘制 第一部分
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)ssm高校实验室 毕业设计 800008
  • (利用IDEA+Maven)定制属于自己的jar包
  • (全注解开发)学习Spring-MVC的第三天
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)visual stdio 书签功能介绍