热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BZOJ4994[Usaco2017Feb]WhyDidtheCowCrosstheRoadIII树状数组

欢迎访问~原文出处——博客园-zhouzhendong去博客园看该题解题目传送门-BZOJ4994题意概括给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解
题目传送门 - BZOJ4994
题意概括

  给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai

  n<=100000(这个数据范围是我凑出来的,但是我没试过更小的范围,BZOJ上没写数据范围(截止2017-08-24))


题解

  水题,开一个树状数组在线解决。

  比如我们顺着扫过去,当到达一个 bj 时,我们求满足条件的 ai,bi 个数,其实就是求 bi~bj 之间有几个数出现一次而且是第一次出现。

  所以我们开树状数组维护。

  我顺着做过去,对于每一个数字i,在ai的地方+1,到了bi就在ai的地方-1,并统计区间ans,累加即可。


代码
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long LL;
const int N=100000+5;
int n,c[N*2],f[N];
LL ans=0;
int lowbit(int x){
	return x&-x;
}
void add(int x,int d){
	for (;x<=n*2;x+=lowbit(x))
		c[x]+=d;
}
int sum(int x){
	int ans=0;
	for (;x>0;x-=lowbit(x))
		ans+=c[x];
	return ans;
}
int main(){
	scanf("%d",&n);
	memset(c,0,sizeof c);
	memset(f,0,sizeof f);
	for (int i=1,x;i<=n*2;i++){
		scanf("%d",&x);
		if (!f[x]){
			f[x]=i;
			add(i,1);
		}
		else {
			ans+=sum(i-1)-sum(f[x]);
			add(f[x],-1);
		}
	}
	printf("%lld",ans);
	return 0;
}

BZOJ4994 [Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组


推荐阅读
  • 简单动态字符串redis里面很多地方都用到了字符串,我们知道redis是一个键值对存储的非关系型数据库,那么所有的key都是用字符串存储的,还有字符串类型,这些都是用字符串存储的 ... [详细]
  • 小度Wifi、360WifiWindows、linux驱动小度wifi什么的就是一个无线网卡,当然可以自由使用,然官方却说不支持无限网卡功能…现提供Windows平台和linux平 ... [详细]
  • SQL数据库可疑恢复 挂起恢复 置疑恢复 SQL数据库无法附加修复 附加报错 9003
    数据类型MSSQL2008R2数据大小352MB故障检测服务器几次断电后数据库可疑无法附加消息1813,级别16,状态2,第1行无法打开新数据库'YXHIS20182 ... [详细]
  • File存储——IO操作文件openFileOutput、openFileInputContext提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流。1.FileInp ... [详细]
  • 这一篇主要总结一下jQuery这个js在引入的时候做的一些初始化工作第一句window.undefinedwindow.undefined;是为了兼容低版本的IE而写的因为在低版本 ... [详细]
  • spotify engineering culture part 1
    原文,因为原视频说的太快太长,又没有字幕,于是借助youtube,把原文听&打出来了。中文版日后有时间再翻译。oneofthebigsucceessfactorshereatSpo ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • vscode里的html标签导航的一系列问题
    哈喽,我今天带来的经验是,vscode在18年10月更新后的1.29以后,编辑html文档时,会发现最上面有个类似于HTML标签导航的玩意儿,可能部分同学和我一样不习惯用它们,现在 ... [详细]
  • Illustrator绘制逼真的愤怒的小鸟实例教程
    Illustrator教程: ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • iOS之富文本
    之前做项目时遇到一个问题:使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 【自制小工具】代码生成器
    【自制小工具】代码生成器陆陆续续接触过好几款代码生成工具,发现确实好用,但都会有那么点不完善的地方,所以索性就自己做一个吧。界面非常简单,反正是自己用的,简单点用起来也方便上图:左 ... [详细]
  • kepserver中文手册,kepserver使用教程,kepserver设置
    下面介绍一下KepServer模拟器的使用,以下示例使用服务器随附的Simulator驱动程序来演示创建、配置和运行项目的过程。Simulator驱动程序是基于内存的驱动程序,能为 ... [详细]
  • 例子如Table表有性别字段,1代表男2代表女、3代表中性、还有没填就代表未说明selectid,decode(sex,'1','男', ... [详细]
author-avatar
黄姐佛光普照_516
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有