- 博客(5)
- 资源 (7)
- 收藏
- 关注
原创 POJ 1632 Vase collection
题意:n个瓶子,每个瓶子有形状颜色两种属性,且这两种属性都有36个类型,告诉你这些瓶子的两种属性的类型,求最大的k满足存在k*k个瓶子,使得这些瓶子的两种属性有k个类型,且覆盖了k*k个属性组合题解:state[a]是形状为a的覆盖的颜色的状态集(用二进制表示),state[a]&state[b]就是这两个形状都覆盖的颜色,如果这数的二进制位有大于等于2个1,就代表可以组成k=2的符合要求的答
2013-04-10 16:20:20 1496
原创 POJ 1687 Buggy Sat
题意:二维平面上一些点组成一个封闭图形,有一些点对之间还有连线,由此形成一些面,题目会告诉你所有的面的轮廓,求最外面的面的编号。题解:最外面的面就是面积最大的面,所以对每个面求一次面积,取最大的就是答案。#include#include#include#include#define max(a,b) (((a)>(b))?(a):(b))#define min(a,b) (((a
2013-04-10 12:19:03 1132
原创 POJ 1870 Bee Breeding
题意:这题图看不太清,大意就是给定蜂巢上两点,求他们的最短距离。题解:首先定然是建一个好一点的系,实际上也说不上好坏,能表示就行。我的系是向下走x+1,反之x-1,向右下走y+1,左上走y-1,对于给定数字,转换成坐标的话先讨论它是第几层,然后看它是这一层的第几个点,因此判断它是第几条边,再根据坐标系转换。转换完成后,增加x坐标,y坐标可以-1也可以不变,减少x坐标,y坐标可以+1也可以不变,
2013-04-08 18:01:14 1417
原创 POJ 1436 Horizontally Visible Segments
题意:给定n条竖直的线段,求有多少个三元组,使得这三条线段两两可见(可见的定义为这两条线段可以连一条水平线段而不与任意其他线段相交)题解:将线段按照x坐标排序,判断两个线段是否可见,就是将后一个线段向左投影能够在第一个线段上留下阴影。用线段树代表某个区间当前阴影代表谁,处理新线段即给那段区间赋值,并记录会覆盖哪些值就行。因为要考虑阴影投射在非整数点,且线段y坐标都是整数,所以线段树的大小要乘二
2013-04-08 16:09:10 1620
原创 POJ 3437 Tree Grafting
题意:给出一个树的中序遍历的上下情况,求这棵树的高度以及它转化为二叉树后的高度。题解:直接求树的高度比较简单,和求区间最大深度的算法一样,就是统计一下就行了;求二叉树的话,实际上这道题说了最多1w个结点,所以可以直接建一棵树,然后再深搜树形DP就行了。#include#include#includeusing namespace std;const int N=10000;cha
2013-04-01 17:04:20 1941
树状数组另一类用法(C++源码)
2014-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人