bzoj1106
模拟+树状数组
先开始以为是先删距离最小的,这样可以减小上下的距离,然后觉得很难写,看码长很短,就看了题解,结果很奥妙
我们只考虑两种元素,就是如果像-a-b-a-b-这样的肯定得交换,如果像-a-b-b-a-或-a-a-b-b-这样的就不用交换,于是我们对于每个元素考虑其他元素,也就是统计两个相同元素中间有多少和这个元素构成区间相交,那么我们打个-1+1,然后树状数组统计一下就行了,然后每统计到右端点就把标记删除,相当于删除这种元素,一遇到右端点就直接交换删除,在树状数组里删除就可以了
#include<bits/stdc++.h>
using namespace std;
int n, top, ans;
int tree[], l[], r[], a[], mark[];
int lowbit(int i)
{
return i & (-i);
}
void update(int pos, int delta)
{
for(int i = pos; i <= * n; i += lowbit(i)) tree[i] += delta;
}
int query(int pos)
{
int ret = ;
for(int i = pos; i; i -= lowbit(i)) ret += tree[i];
return ret;
}
int main()
{
memset(l, 0x3f3f, sizeof(l));
scanf("%d", &n);
for(int i = ; i <= * n; ++i)
{
int x;
scanf("%d", &a[i]);
if(mark[a[i]]) update(i, -);
else update(i, );
l[a[i]] = min(l[a[i]], i);
r[a[i]] = max(r[a[i]], i);
mark[a[i]] = ;
}
for(int i = ; i <= * n; ++i) if(i == r[a[i]])
{
ans += query(i) - query(l[a[i]] - );
update(l[a[i]], -);
update(r[a[i]], );
}
printf("%d\n", ans);
return ;
}
bzoj1106的更多相关文章
- [BZOJ1106][POI2007] Tet 立方体大作战
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...
- BZOJ1106: [POI2007]立方体大作战tet
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 419 Solved: 302[Submit][St ...
- bzoj1106 树状数组
https://www.lydsy.com/JudgeOnline/problem.php?id=1106 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介 ...
- BZOJ1106[POI2007]立方体大作战tet - 树状数组
描述 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编 ...
- [BZOJ1106/POI2007]Tet立方体大作战
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...
- [bzoj1106]立方体大作战
先贪心,容易发现如果两个点中间没有点对,那么一定可以先把这两个点消掉分析一下,就可以发现这样两个点的答案就是这两个点对中间不成对的点数量扫描过去,线段树维护每一个点的权值(是否会被算入答案)即可 1 ...
- poi2007
序:为什么写poi,zy说poi都是思路题目,不像hnoi妈的数据结构队..... 1.bzoj1102 题目大意:定义了一个山谷和山峰,求他们数量. 题解:这种题bfs咯,在bfs的时候记录一下相邻 ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- DP+贪心水题合集_C++
本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...
随机推荐
- 【转载】eclipse设置护眼色详细教程
先上一张效果图: 下面开始设置: 首先设置代码区的背景色: Window–>preference-->General-->Editors-->Test Editors ...
- 巩固JavaSE基础--IDEA完成实战项目
PS:学习完JavaSE基础后,需要有一个项目来测试自己的学习成果,并加以巩固.所以在这里,就让我们来学习下“一本糊涂账”项目吧.(此项目来源于Java自学网站) 项目完成效果图一览
- scp 上传文件自动录入密码
--- 服务器IP地址 des_host=serverIp 服务器存储路径(文件上传后存储指定目录下) des_direc=/home/lk/ 服务器用户密码 des_pass=root_passwo ...
- Linux设置history命令显示行数以及时间
Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录但是,这个记录并不包含时间项目因此只能看到命令,但是不知道什么时间执行的如何让history记录时间呢? 解决方案 注意 ...
- Go:函数、defer
一.函数可赋值给一个变量 示例1: package main import "fmt" func add(a, b int) int { return a + b } func m ...
- config对象的使用及常用方法
config对象的使用及常用方法 制作人:全心全意 config对象主要用于取得服务器的配置信息.通过pageContext对象的getServletConfig()方法可以获取一个config对象. ...
- 如何卸载 win10 自带的“电影和电视”软件
参考这里: https://answers.microsoft.com/zh-hans/windows/forum/apps_windows_10-movies/win10%E7%9A%84%E7%9 ...
- POJ - 2007 极角排序(Java 实现)
POJ 2007 将所有的点按逆时针输出 import java.io.*; import java.util.*; public class Main { static class Point im ...
- PAT 1129 Recommendation System
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- codechef 写题计划
此后将查找各种codechef的脑洞题和好题写