摘要: 题目: 给出2*n个矩形(给出长和宽),问前n个矩形能够套上最多多少个后n个矩形分析: 把前n个矩形与后n个矩形分开在两数组中,然后分别先对长x(或宽)排序,排序结束后,只需要满足另外一个条件y就行。 在这里我们利用贪心的思想,每次从后n个矩形中满足x1>=x2且y2值尽可能最大,要维护y2值最大,我们可以使用平衡树(SBT、AVL、TREAP)或者Splay来维护都行,另外可利用STL的福利,直接调用multiset<int> s;维护即可,具体的应用请百度、谷歌,代码如下: 稍后我把SBT的弄上来View CodeSBT的如下:View Code 1 #include & 阅读全文
posted @ 2012-09-08 23:13 yejinru 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 题目: 给出n条边,每条边有一定的长度,现在要用所有的边围成三角形,问能够围成多少个不同的三角形(三边至少有一边不等)。 分析: 对三角形进行编号,A,B,C三边,所有的边必定在其中的一条上面,只要三进制压缩枚举每条边所在的位置即可,也可以直接 dfs枚举即可。另外注意到第一根木棍肯定在三角形的一条边上,所以根据对称关系,可以直接把他放在a号边即可View Code #include <cstdio>#include <cstring>#include <set>#include <algorithm>using namespace std;co 阅读全文
posted @ 2012-09-08 18:31 yejinru 阅读(933) 评论(3) 推荐(1) 编辑