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相关推荐

  1. bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)

    1106: [POI2007]立方体大作战tet Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 785  Solved: 574 [Submit][ ...

  2. bzoj1106[POI2007]立方体大作战tet*

    bzoj1106[POI2007]立方体大作战tet 题意: 给定玩家一个有2n个元素的栈,这些元素拥有n个不同的编号,每个编号正好有两个元素.玩家每次可以交换两个相邻的元素.如果在交换之后,两个相邻 ...

  3. 1106: [POI2007]立方体大作战tet

    Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n ...

  4. BZOJ 1106: [POI2007]立方体大作战tet

    Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n ...

  5. [BZOJ1106/POI2007]Tet立方体大作战

    Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...

  6. 【POI 2007】Tetris Attack 正方体大作战(tet)

    http://www.zybbs.org/JudgeOnline/problem.php?id=1106 http://main.edu.pl/en/archive/oi/14/tet 题目大意:诶呀 ...

  7. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  8. SLAM第12讲 建图实践部分

    1 实践:单目稠密重建 1.1 我们需要下载示例程序所需要的数据集http://rpg.ifi.uzh.ch/datasets/remode_test_data.zip.它提供了一架无人机采集到的单目 ...

  9. 论文翻译 | 多鱼眼相机的全景SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 提出了一种基于特征的全景图像序列同时定位和建图系统,该系统是在宽基线移动建图系统中从多鱼眼相 ...

最新文章

  1. 爱奇艺手机客服端储存的视频,如何在手机文件夹里面找到啊?
  2. 取得select框的text
  3. MongoDB学习之路(三)
  4. Oracle 双机热备 镜像 纯软 实战 配置教程 配置手册
  5. 推荐系统笔记(近邻推荐)
  6. excel大数据重采样批量操作(每两列中插入新一列,新一列为左右两列的平均值)
  7. 使用移动自适应布局+easy mock实现移动界面的简单实现
  8. php编译安装与配置
  9. 云服务器(Centos)部署SVN
  10. jQuery Mobile中jQuery.mobile.changePage方法使用详解
  11. securityPolicy与安全策略等级配置
  12. C++命名空间和头文件的关系 例如已经使用了#includestring,为什么还要 using std::string?...
  13. error C2864 只有静态常量整型数据成员才可以在类中初始化
  14. 个人云存储的两大强者比拼 百度云VS苹果iCloud
  15. ubuntu 出现device not managed,解决方法
  16. 有n个结构体变量,内含学生学号、姓名、3门课程的成绩,要求输出平均成绩最高的学生信息
  17. 什么是DNA微阵列技术?
  18. 计算机硬盘用u盘维修,硬盘,提示分区损坏怎么办,学会这招解决电脑硬盘分区损坏问题...
  19. Kubernetes K8S之Pod跨namespace名称空间访问Service服务
  20. [网络流]学习笔记:一次理解网络流!

热门文章

  1. 3t硬盘哪个服务器系统识别,3T硬盘为何不能被系统完全识别
  2. linux编译poco静态库,iOS——为Xcode编译POCO C++静态库
  3. Helm 创建一个NOTES.txt文件
  4. ae显示不能动态链接服务器,ae pr如何联动、建立动态链接?
  5. vim 删除重复部分的行 vim 技巧
  6. 智能语音计算器(四)
  7. 搜索技术——遗传算法
  8. 倍福TwinCAT3 的OPC_UA通信测试案例
  9. AcWing 2048. 干草
  10. 模拟量输出模块支持西门子三菱PLC接DCS控制系统