bzoj 1106】的更多相关文章

题目链接:BZOJ - 1106 题目分析 从1到2n枚举每一个位置. 如果枚举到某一个数,这个数已经是第二次出现,那么就看它和第一次出现的位置之间有多少数还没有被匹配,有多少没有匹配的就要进行多少次交换. 代码 #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm>…
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 682  Solved: 496[Submit][Status][Discuss] Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编号正好有两个元素.玩家每次可以交换两个相邻的元素.如…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1106 [题目大意] 给定玩家一个有2n个元素的栈,元素一个叠一个地放置. 这些元素拥有n个不同的编号,每个编号正好有两个元素. 玩家每次可以交换两个相邻的元素.如果在交换之后,两个相邻的元素编号相同, 则将他们都从栈中移除,所有在他们上面的元素都会掉落下来并且可以导致连锁反应. 玩家的目标是用最少的步数将方块全部消除. [题解] 我们发现如果有一对可消除的方块在另一对中间,那么肯定是…
BIT. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 200050 using namespace std; ; int lowbit(int x) { return (x&(-x)); } int query(int x) { ; ;i-=lowbit(i)) ret+=t[i]; return ret; } void…
思路:很容易就能想到统计没两对点之间的未匹配点的个数. 在想怎么用数据结构维护这个东西, 没有想到用树状数组能很巧妙地维护出来, 就写了个莫队... 莫队:暴力维护就好了. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define piii pair<int, pai…
[POI2007]立方体大作战tet Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 821  Solved: 601[Submit][Status][Discuss] Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编号正好有两个元素.玩家每次可以交换两个相邻的元素.如果在交换之后…
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编号正好有两个 元素.玩家每次可以交换两个相邻的元素.如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除, 所有在他们上面的元素都会掉落下来并且可以导致连锁反应.玩家的目标是用最少的步数将方块全部消除. Input 第一行包含一个正整数n(1<=n<=50000).接下…
正规.严谨.精妙. -POI bzoj 1098 : [POI2007]办公楼biu 如果把互相有手机号的建边得到一个无向图,那么这个图的补图的连通分量个数就是答案了.因为互相没手机号的必然在同一个连通分量里.但是注意到N(2<=N<=100000)M(1<=M<=2000000) 补图是个非常稠密的图,如果直接做的话会tle或mle.可以用一个链表来优化bfs.链表初始有N个点,bfs每次开一个now[n]数组标记该点是否邻接,然后对于链表中的每个元素若不邻接,就可以加到队列里扩…
题意 给定一个长度为\(2n(1 \le n \le 500000)\)的序列,\(1\)~\(n\)各出现两次,可以交换相邻两项,两个同样的数放在一起会对消,求把所有数对消的最小交换次数. 分析 如果有一对在另一对之间,则这一对肯定要在另一对前面消除. 否则答案不变. 题解 维护一个栈存储第一次出现的数,然后如果新进来的元素已经出现过,则暴力找出来统计答案. #include <bits/stdc++.h> using namespace std; inline int getint() {…
2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Discuss] Description 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值.作为计算机竞赛教练的scp大老板…