[POI2007]立方体大作战tet
Description
一个叫做立方体大作战的游戏风靡整个Byteotia。这个游戏的规则是相当复杂的,所以我们只介绍他的简单规
则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置。这些元素拥有n个不同的编号,每个编号正好有两个
元素。玩家每次可以交换两个相邻的元素。如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除,
所有在他们上面的元素都会掉落下来并且可以导致连锁反应。玩家的目标是用最少的步数将方块全部消除。
Input
第一行包含一个正整数n(1<=n<=50000)。接下来2n行每行一个数ai,从上到下描述整个栈,保证每个数出现且
仅只出现两次(1<=ai<=n)。初始时,没有两个相同元素相邻。并且保证所有数据都能在1000000步以内出解。
Output
第一行包含一个数m,表示最少的步数。
Sample Input
样例输入1
5
5
2
3
1
4
1
4
3
5
2
样例输入2
3
1
2
3
1
2
3
Sample Output
样例输出1
2
样例输出2
3
我们可以类比一直放块上去,模拟的思想。让两个不相邻的碰到一起,必然需要之间隔的块数的次数。
如果当前放着一块的时候,前面已经有一块一样的了,那么直接加上贡献值,然后把前面的那一块去掉,然后这个过程我们可以用树状数组维护。
AC代码:
#pragma GCC optimize(2)
#include<bits/stdc++.h>
//#define int long long
#define lowbit(x) (x&(-x))
using namespace std;
const int N=1e5+10;
int n,m,d[N],vis[N],res;
inline void add(int x,int v){for(;x<=m;x+=lowbit(x)) d[x]+=v;}
inline int ask(int x){int res=0; for(;x;x-=lowbit(x)) res+=d[x]; return res;}
signed main(){cin>>n; m=n<<1;for(int i=1;i<=m;i++){int x; scanf("%d",&x);if(vis[x]){res+=ask(i)-ask(vis[x]); add(vis[x],-1);}else vis[x]=i,add(i,1);}printf("%d\n",res);return 0;
}
[POI2007]立方体大作战tet相关推荐
- bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MB Submit: 785 Solved: 574 [Submit][ ...
- bzoj1106[POI2007]立方体大作战tet*
bzoj1106[POI2007]立方体大作战tet 题意: 给定玩家一个有2n个元素的栈,这些元素拥有n个不同的编号,每个编号正好有两个元素.玩家每次可以交换两个相邻的元素.如果在交换之后,两个相邻 ...
- 1106: [POI2007]立方体大作战tet
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n ...
- BZOJ 1106: [POI2007]立方体大作战tet
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n ...
- [BZOJ1106/POI2007]Tet立方体大作战
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...
- 【POI 2007】Tetris Attack 正方体大作战(tet)
http://www.zybbs.org/JudgeOnline/problem.php?id=1106 http://main.edu.pl/en/archive/oi/14/tet 题目大意:诶呀 ...
- [颓废史]蒟蒻的刷题记录
QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...
- SLAM第12讲 建图实践部分
1 实践:单目稠密重建 1.1 我们需要下载示例程序所需要的数据集http://rpg.ifi.uzh.ch/datasets/remode_test_data.zip.它提供了一架无人机采集到的单目 ...
- 论文翻译 | 多鱼眼相机的全景SLAM
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 提出了一种基于特征的全景图像序列同时定位和建图系统,该系统是在宽基线移动建图系统中从多鱼眼相 ...
最新文章
- 爱奇艺手机客服端储存的视频,如何在手机文件夹里面找到啊?
- 取得select框的text
- MongoDB学习之路(三)
- Oracle 双机热备 镜像 纯软 实战 配置教程 配置手册
- 推荐系统笔记(近邻推荐)
- excel大数据重采样批量操作(每两列中插入新一列,新一列为左右两列的平均值)
- 使用移动自适应布局+easy mock实现移动界面的简单实现
- php编译安装与配置
- 云服务器(Centos)部署SVN
- jQuery Mobile中jQuery.mobile.changePage方法使用详解
- securityPolicy与安全策略等级配置
- C++命名空间和头文件的关系 例如已经使用了#includestring,为什么还要 using std::string?...
- error C2864 只有静态常量整型数据成员才可以在类中初始化
- 个人云存储的两大强者比拼 百度云VS苹果iCloud
- ubuntu 出现device not managed,解决方法
- 有n个结构体变量,内含学生学号、姓名、3门课程的成绩,要求输出平均成绩最高的学生信息
- 什么是DNA微阵列技术?
- 计算机硬盘用u盘维修,硬盘,提示分区损坏怎么办,学会这招解决电脑硬盘分区损坏问题...
- Kubernetes K8S之Pod跨namespace名称空间访问Service服务
- [网络流]学习笔记:一次理解网络流!