[bzoj4994][Usaco2017 Feb]Why Did the Cow Cross the Road III_树状数组

Why Did the Cow Cross the Road III bzoj-4994 Usaco-2017 Feb

题目大意:给定长度为$2N$的序列,$1~N$各处现过$2$次,$i$第一次出现位置记为$a_i$,第二次记为$b_i$,求满足$a_i<a_j<b_i<b_j$的对数。

注释:$1\le n\le 10^5$。


想法:显然树状数组。

但是如何树状数组还是卡了我好半天。

不能像之前的题一样,一个数出现的第一个位置是正标记,第二个位置是负标记。

这次我们考虑第一次遇到这个数的时候打上正标记,第二次遇到这个数的时候把第一次遇到时打的正标记删除即可。

Code:

#include <bits/stdc++.h>
#define N 100010 
using namespace std; typedef long long ll;
int tr[N<<2],vis[N],a[N<<1],n;
inline char nc() {static char *p1,*p2,buf[100000]; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}
int rd() {int x=0; char c=nc(); while(!isdigit(c)) c=nc(); while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=nc(); return x;}
inline int lowbit(int x) {return x&(-x);}
void update(int x,int val) {for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=val;}
ll query(int x) {ll ans=0; for(int i=x;i;i-=lowbit(i)) ans+=tr[i]; return ans;}
int main()
{ll ans=0; n=rd()*2; for(int i=1;i<=n;i++) a[i]=rd(); for(int i=1;i<=n;i++)if(!vis[a[i]]) update(i,1),vis[a[i]]=i;else ans+=query(i)-query(vis[a[i]]),update(vis[a[i]],-1);cout << ans << endl ;return 0;
}

小结:树状数组的小应用。

转载于:https://www.cnblogs.com/ShuraK/p/10098087.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离奇的梦境,能够防范大脑过拟合

来源&#xff1a;混沌巡洋舰 1 )梦让我们对世界的理解不再那么简单化关于为什么大脑进化出夜间做梦&#xff1f;神经科学界提出了各种假说&#xff0c;诸如通过梦来调节情绪&#xff0c;巩固记忆&#xff0c;或梦可以帮助我们选择性的遗忘&#xff0c;对我们应对现实世界的问题…

RGB空间中的彩色图像分割原理及其python实现

RGB空间中的彩色图像分割 ⭐️ 为尊重原创性&#xff01;转载请注明出处&#xff1a;©️ Sylvan Ding’s Blog 概述 本文论述了基于欧式距离和曼哈顿距离的彩色图像分割算法&#xff0c;并用python实现了各个算法。之后将二者的优势结合&#xff0c;提出了改进后的曼哈顿…

路飞学城Python-Day171

Evernote Export 线性结构&#xff1a;python的列表操作列表是如何存储的&#xff1a;顺序存储的&#xff0c;是一块连续的内存&#xff0c;内存是一堆格子&#xff0c;列表是一串连续的编号32位机器上一个整数占4个字节数组和列表有2点不同&#xff0c;1.数组的元素类型要求是…

HarmonyOS 2面世!是没有退路还是时机成熟?中国操作系统崛起元年或已到来

来源&#xff1a;21Tech(News-21)作者&#xff1a;倪雨晴编辑&#xff1a;张星6月2日晚间&#xff0c;华为鸿蒙操作系统HarmonyOS迎来重要时刻&#xff0c;华为正式发布多款搭载HarmonyOS 2的新产品&#xff0c;包括HUAWEI Mate 40系列新版本、Mate X2新版本、HUAWEI WATCH 3系…

操作系统:线程同步

操作系统&#xff1a;线程同步 使用Linux无名信号量实现了读写者线程的互斥和同步。 实验环境 环境&#xff1a;Linux语言&#xff1a;CCMake&#xff1a;3.17.1GCC&#xff1a;7.5.0IDE&#xff1a;Clion 2020.3.1 实验目标 理解进程同步的两种制约关系&#xff1a;互斥与…

python201811210作业4

5. 尝试实现一个管理系统通讯录管理系统 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出5. 随机产生密码&#xff1a;在26个大小写字母和10个数字组成的列表中&#xff0c;随机生成10个8位密码1.通过代码实现如下转换&#xff1a;• 二进…

中国工程院2021年院士增选第二轮候选人名单公布

来源&#xff1a;先进制造业中国工程院2021年院士增选进入第二轮评审候选人名单&#xff08;按候选人姓名拼音排序&#xff09;未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城…

vsftpd部署流程和常见问题详解

vsftpd部署流程和常见问题详解 ⭐️ 网上关于在云服务器里配置vsftpd的文章鱼龙混杂&#xff0c;没有一篇是可以彻底解决问题的&#xff0c;有些问题虽简单&#xff0c;但也让初学者感到困惑。本文详细说明vsftpd的部署流程和一些常见问题的解决方法&#xff0c;详述用户创建过…

洛谷 1341 无序字母对

欧拉路的裸题&#xff1f;&#xff1f;&#xff1f; 1 #include <algorithm>2 #include <iostream>3 #include <cstring>4 #include <cstdio>5 6 using namespace std;7 8 const int N 3550;9 10 int e[N][N], fir[4], a[N], m, tot, v[N], id[N], f…

谷歌发布史上最强人类大脑「地图」,1.3亿个突触,在线可视3D神经元「森林」!...

来源&#xff1a;Google AI Blog编辑&#xff1a;yaxin, LQ &#xff08;新智元&#xff09;突触&#xff0c;是神经网络的「桥梁」。我们知道&#xff0c;人类大脑有860亿个神经元&#xff0c;因为有了突触&#xff0c;才可以把神经元上的电信号传递到下一个神经元。长久以来&…

智慧食堂项目策划书(商业计划书/立项计划)

金鹰物联智慧食堂项目策划书&#xff08;商业计划书/立项计划&#xff09; ©️ 金鹰物联项目组&#xff0c;转载请注明出处&#xff01; ⭐️ 技术部分请参考博文&#xff1a;基于YOLOv5的中式快餐店菜品识别系统 文章目录金鹰物联智慧食堂项目策划书&#xff08;商业计划…

pipelineDB学习笔记-2. Stream (流)

一、流的定义&#xff1a; 所谓的“流”&#xff08;stream&#xff09;在pipelineDB中是指那些被允许的数据库客服端推送到 Continuous View&#xff08;连续视图&#xff09; 的时序化数据的一种“抽象”。流中的每一个raw(数据列)或者event(事件)&#xff0c;看起来是和普通…

银行家算法之Python实现[操作系统实验]

银行家算法 银行家算法是著名的死锁避免算法&#xff0c;其思想是&#xff1a;把操作系统视为银行家&#xff0c;操作系统管理的资源相当于银行家管理的资金&#xff0c;进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。进程…

城市智能化发展中,AI公司应该做什么?

来源&#xff1a;虎嗅APP题图来源:视觉中国在上海长宁区的部分区域&#xff0c;你会发现共享单车总是能够整整齐齐的排列&#xff0c;并且在每一个你需要的街道路边&#xff0c;都能找到空闲的单车&#xff0c;既不会车辆爆满&#xff0c;也不会无车可骑。这些城市细微之处的体…

getchar(),putchar()用法

1.getchar函数可以接收用户输入的多个字符&#xff0c;只用等用户按下回车键后&#xff0c;getchar()函数才会从键盘缓冲区依次读出字符&#xff1b; 2.getchar()和putchar()结合使用&#xff0c;可以将读取的字符输出到屏幕&#xff1b; 3.函数原型&#xff1a; int getchar…

[操作系统]页面置换算法实验及C++实现(OPT、FIFO、LRU)

虚拟内存页面置换算法实验&#xff08;OPT、FIFO、LRU&#xff09; 进程运行时&#xff0c;若其访问的页面不再内存中而需将其调入&#xff0c;但内存已无空闲空间时&#xff0c;就需要从内存中调出一页程序或数据&#xff0c;送入磁盘的对换区。选择调出页面的算法就称为页面…

智谱AI多项成果惊艳亮相2021北京智源大会

来源&#xff1a;学术头条2021 年 6 月 1 日&#xff0c;由北京智源人工智能研究院&#xff08;以下简称 “智源”&#xff09;主办的 2021 北京智源大会在北京中关村国家自主创新示范区会议中心成功开幕。包括 Yoshua Bengio、David Patterson 等图灵奖获得者在内的两百余位国…

python-字典方法

1.字典的格式化字符串在转换说明符%后面加上键(圆括号括起来)&#xff1b;phonebook{"A":45,"B":"56"} s"As phone number is %(A)s." print(s%phonebook) 运行结果&#xff1a; #字典方法&#xff1a; #clear():清楚字典中的所有的项…

js常用随手记

1. 判断是否是空对象 let myObject{} Object.keys(myObject).length // 0 2. void 0 代替 undefined undefined 不是保留字&#xff0c;在局部作用域下能被重写&#xff0c;因此在 val undefined 是有风险的 并且代替后有以下优点&#xff1a; void 0 占用字节更少void 0 更安…

2020-2021学年(2)操作系统考试重点[华侨大学]

2020-2021学年(2)操作系统考试重点 名词解释 操作系统&#xff1a;操作系统是程序的集合&#xff0c;负责控制和管理软硬件资源&#xff0c;并实现作业调度分时系统&#xff1a;&#xff08;分时性&#xff09;宏观上&#xff0c;多个用户同时工作&#xff0c;共享系统资源。…