[Usaco2004 Open]Cube Stacking 方块游戏】的更多相关文章

题面:     约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.    游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:     1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.     2.统计(C):统计名含X的立方柱中,在X下方的方块数目.     写个程序帮贝茜完成游戏.   解法:带权并查集,记录一个底面,顶面,x上面的立方体的个数. #include <iostream> #include &…
算是挺基础的东西 Description     约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.    游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:     1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.     2.统计(C):统计名含X的立方柱中,在X下方的方块数目.     写个程序帮贝茜完成游戏. Input     第1行输入P,之后P行每行输入一条指令.形式为“M X Y”或者“C X”…
[传送门:BZOJ3376] 简要题意: 约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包含Y的立方柱上. 2.统计(C):统计名含X的立方柱中,在X下方的方块数目. 写个程序帮贝茜完成游戏. 输入格式: • 第一行:一个整数Q, 1 ≤ Q ≤ 100000 • 第二行到Q + 1 行:每行描述一个事件,表示约翰的一个移动…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 有P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包含Y的立方柱上. 2.统计(C):统计名含X的立方柱中,在X下方的方块数目. 题解: 带权并查集 存三个东西,x所在立方柱的最顶端fa[x],x所在立方柱的最底端d[x],x上面有多少个立方柱f[x](下…
这道题一开始以为是平衡树结果发现复杂度过不去,然后发现我们一直合并而且只是记录到最低的距离,那么就是带权并查集了,带权并查集的权一般是到根的距离,因为不算根要好打,不过还有一些其他的,具体的具体打. #include <cstdio> #include <cstring> ; int h[N],f[N],size[N]; ]; inline int find(int x){ if(f[x]==x)return x; int temp=f[x];f[x]=find(f[x]); if…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3376 带偏移量的并查集. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,M=1e5+; int n,m,x[M],y[M],fa[N],dis[N],siz[N]; char op[M]; int rdn()…
题解 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; ; int q,fa[N],f[N],d[N]; int find(int x){ if(fa[x]!=x){ int y=fa[x]; fa[x]=find(y); d[x]=d[y]; f[x]=f[x]+f[y];…
题目描述 约翰和贝茜在玩一个方块游戏.编号为 1\ldots n 1-n 的 n n ( 1 \leq n \leq 30000 1≤n≤30000 )个方块正放在地上,每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出 P (1≤P≤100000 )个指令.指令有两种: 移动(M):将包含X的立方柱移动到包含Y的立方柱上. 统计(C):统计含X的立方柱中,在X下方的方块数目. 写个程序帮贝茜完成游戏. 输入输出格式 输入格式: 第1行输入 P ,之后 P 行每行输入一条指令,形式为"M X Y…
Cube Stacking Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1988 Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They st…
Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 23678   Accepted: 8299 Case Time Limit: 1000MS Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start w…
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21350 Accepted: 7470 Case Time Limit: 1000MS Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with…
Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) op…
Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 21567   Accepted: 7554 Case Time Limit: 1000MS Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start w…
Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 18834   Accepted: 6535 Case Time Limit: 1000MS Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start w…
1590 - 方块游戏 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/problem/show/1590 Description BG和ZZ一起玩一个游戏,游戏规则如下:        游戏开始时画在一张纸上,纸上画有n*m个方块组成的格子,BG和ZZ轮流玩这个游戏,BG先开始.每一轮玩家都会在上一次的方框内框出一个小方框作为下一轮的方框,这个小方框的边和原先的方框的边不能够有交集.        这个游…
洛谷P1196 银河英雄传说 题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展.宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点名将杨威利组织麾下三万艘战舰迎敌.杨威利擅长排兵布阵,巧妙运用各种战术屡次以少胜多,难免恣生骄气.在这次决战中,他将巴米利恩星域战场划分成30000列,每列依次编号为1, 2, -,30000.之后,他把自己…
题目链接:id=1988">POJ 1988 Cube Stacking 并查集的题目 [题目大意] 有n个元素,開始每一个元素自己 一栈.有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈. 另外一种操作是询问含有x元素以下有多少个元素. 用sum数组储存每一个栈中的元素个数.每次合并的时候将sum加到 父亲节点.也就是每一个栈的最底部. 用under数组储存当前节点以下有多少元素.每次合并的时候,就能够将顶端元素的under赋值为父节点也就是栈最底部的sum. void U…
POJ 1988 Cube Stacking( 带权并查集 ) 非常棒的一道题!借鉴"找回失去的"博客 链接:传送门 题意: P次查询,每次查询有两种: M x y 将包含x的集合移动到y上面 C x, 计算x下面有几个元素.用p[x]表示x的根结点, 思路:cnt[x] 表示x所在集合的元素个数,top[x] 表示x上面有几个元素.每次进行路径压缩时,top[x] 都要加上 top[ par[x] ],cnt 和 par 的操作就是并查集的基本操作.最后计算结果是用 x 所在集合元素…
题目大意: 以N ( 1 ≤ N ≤ 30,000 )个堆栈开始,每个堆栈包含一个单独的立方体.执行P(1≤ P ≤100,000)的操作. 有两种类型的操作:移动和计数. *在移动操作中,将 包含方块X的堆栈 移动到 包含方块Y的堆栈 顶部. *在计数操作中,在 包含立方体X的堆栈中 计算立方体X之上的立方体数量并报告该值. 编写一个可以验证游戏结果的程序. Input * Line 1: A single integer, P * Lines 2..P+1: Each of these li…
Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) operation. There…
源码:http://download.csdn.net/detail/liumingm900913/7469969 游戏开发流程: 1.创建画布: 将画布放在div标签里面,这样能够控制画布居中的位置,再对div标签加上一些样式比方border和border-radius,这样一来使其看上去像手机,利于观看. <div id="main"> <!--将画布嵌在div块里面,使其能够居中--> <canvas id="liuming_canvas&…
题目链接:http://poj.org/problem?id=1988 题意:有n个方块,编号为1-n,现在存在两种操作: M  i  j  将编号为i的方块所在的那一堆方块移到编号为j的方块所在的那一堆方块上方,方块原先的相对位置保持不变 C  i     计算在方块i下面有多少个方块 虽然知道这道题用并查集做,但并没什么思路.看了看题解:用h[i]维护当前方块到其父亲方块的距离,num[i]维护方块i所在的堆的方块数,每次合并(unite)时,将最下面的方块作为根节点,并更新新堆的木块数.每…
Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) operation. There…
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方向. XXXXXX <- 长度为6的横向长条. 第i个长条的最左端的格子坐标是Li,最右端的格子坐标是Ri:长条从很高的位置下落,中途遇到地面或者受到之前长条支撑,就会停在当前高度. 你能计算出每个长条最后停留的高度是多少吗? 直接停在地面上的长条高度视为1. 例如5个长条依次下落的位置是[10,…
题目 题目oj(洛谷) Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) operation. There…
题目链接:http://poj.org/problem?id=1988 题目大意:给你N个方块,编号从1到N,有两种操作,第一种是M(x,y),意思是将x所在的堆放到y所在的堆上面. 第二种是C(x),意思是数x方块下面有多少个方块. 把两堆合成一堆,这个可以用并查集来实现,问题是,怎么样维护x方块下面有多少个方块呢? 先来分析一下题目,按照样例,我们有6个方块,1,2,3,4,5,6. 令Cnt(x) = C(x)+1. 先执行M(1,6),此时Cnt(1) = 2, Cnt(6) = 1 再…
http://wikioi.com/problem/1108/ 这题有点变态,因为他根本没有策略! 还是说这题不是实时的?反正这题很变态,是在一个时间段同时消除所有的行列斜边,同一时间!!!!!! 所以直接模拟找出所有这些行列就行了. #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <al…
n有N(N<=30,000)堆方块,开始每堆都是一个方块.方块编号1 – N. 有两种操作: nM x y : 表示把方块x所在的堆,拿起来叠放到y所在的堆上. nC x : 问方块x下面有多少个方块. n操作最多有 P (P<=100,000)次.对每次C操作,输出结果.     这题挺厉害的,真的不容易想    #include<cstdio> #include<cstring> #include<iostream> #include<string…
<题目链接> 题目大意: 有几个stack,初始里面有一个cube.支持两种操作: 1.move x y: 将x所在的stack移动到y所在stack的顶部. 2.count x:数在x所在stack中,在x之下的cube的个数. 解题分析:由于要实现大量数的移动和归属关系,所以想到可能要用并查集,但是毫无疑问,普通的并查集不能够实现统计在x下的cube个数这一功能,所以我们通过带权并查集来实现,每一个stack,以最高的点为根,然后每一个点维护两个权值,它的子树节点个数(包括它自身),和它到…
题意:有N(N<=30,000)堆方块,开始每堆都是一个方块.方块编号1 – N. 有两种操作: M x y : 表示把方块x所在的堆,拿起来叠放到y所在的堆上. C x : 问方块x下面有多少个方块. 操作最多有 P (P<=100,000)次. 对每次C操作,输出结果. #include<stdio.h> ; int parent[MAX]; int sum[MAX]; //sum[i]表示砖块i所在的堆的砖块数目 int under[MAX]; //under[i]表示砖块i…