Codevs 1689 建造高塔】的更多相关文章

1689 建造高塔 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **钻石 Diamond** 题目描述 Description n有n种石块,石块能无限供应.每种石块都是长方体,其中第i种石块的长.宽.高分别为li.wi.hi.石块可以旋转,使得其中两维成为长度和宽度,第三维成为高度.如果要把一个石块放在另一个石块上面,必须保证上面石块的长和宽都分别严格小于下面石块的长和宽.这意味着,即使两块长宽相同的石块也不能堆砌起来. 现在神犇想知道,最多能用上多少块石头呢? 输入描述…
/*机智sort二维转一维*/ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 50010 using namespace std; ]; struct node { int l,r; }a[maxn*]; int cmp(const node &x,const node &y) { if(x.l==y.l)retur…
题目描述 Description n有n种石块,石块能无限供应.每种石块都是长方体,其中第i种石块的长.宽.高分别为li.wi.hi.石块可以旋转,使得其中两维成为长度和宽度,第三维成为高度.如果要把一个石块放在另一个石块上面,必须保证上面石块的长和宽都分别严格小于下面石块的长和宽.这意味着,即使两块长宽相同的石块也不能堆砌起来. 现在神犇想知道,最多能用上多少块石头呢?   输入描述 Input Description 第一行,N: 以下N行,每行三个数,表示第i种石头的长宽高. 输出描述 O…
  公司这几天在准备新版本的上线,今天才忙里偷闲来写这篇博客.接着上一篇的"H5坦克大战之[玩家控制坦克移动2]"(http://www.cnblogs.com/zhouhuan/p/H5_tankgame3.html),这一篇来写怎么建造敌人的坦克. 我的想法是,基于可扩展性和性能等方面的考虑,用构造函数改造之前的部分代码,再在这个基础上,实例化出来不同的坦克.   1.一开始的两个步骤不变 //封装一个获取绘图环境的函数 function getCxt(){ var myCanva…
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可以解决,方程类似最长上升子序列: f[i]=max(f[j])  ( 1≤j≤i-1 && ( (f[j]%2=1 && A[j]<A[i] ) || (j%2=0 && A[j]>A[i]) )  ) p[i]=max(p[i])  (  1≤j≤…
在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Makefile 本身却不是一件容易的事情.SCons 是一个用 Python 语言编写的类似于 make 工具的程序.与 make 工具相比较,SCons 的配置文件更加简单清晰明了,除此之外,它还有许多的优点.本文将简单介绍如何在软件开发项目中使用 SCons,通过本文,读者可以学习到如何使用 SCon…
codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下来n行n个整数, 再接下来一个正整数Q,每行表示操作的个数, 如果第一个数是1,后接3个正整数, 表示在区间[a,b]内每个数增加X,如果是2, 表示操作2询问区间[a…
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把它看成是一个"下标",它是指向set集合中的某个元素的指针,它用来遍历这个集合. 头文件 #include<set> #include<iterator> //set 经常会使用到迭代器,因此需要迭代器的头文件 定义二叉查找树: set<数据类型> 名称…
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根据数星星的经验,一个点一个点更新可以解决1到i-1的问题,然后线段树是维护最大值,那么A[j]<A[i]的条件就用查询区间保证,即查询:1到A[i]的f[i]最大值.为了不溢出,因此需要离散化. 附代码: #include<cstdio> #include<algorithm>…
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这段区间的和. 比如说线段树1号节点表示[1,5]区间,它的值是13,也就是原数组1号位到5号位所有数字加起来的和. 不难发现线段树的下标有这样的性质: 1. 设一个节点的下号是o,那么它的左子树是o*2,右子树是o*2+1. 2. 线段树的大小是原数组的大小*2-1. 3. 线段树叶节点表示区间的长…