UVA 1436 - Counting heaps
题目链接
题意:给定一个树的结构,放1-n数字进去,父亲结点值必须小于子节点,问情况有几种.
思路:f[u]表示以u为子树的情况,那么子树情况为f(v1), f(v2), f(v3)... f(vn).去组成子树相当于从中选s(v1), s(v2), s(v3) ... s(vn).根据组合数学,情况为f(v1)
f(v2) ...
分类:
其他好文 时间:
2014-07-02 09:42:35
阅读次数:
187
UVA 11123 - Counting Trapizoid
题目链接
题意:给定一些点,不重复,求出一共有几个梯形
思路:先把所有两点组成直线求出来,然后排序,斜率相同的C2n个,然后再扣除掉重叠的直线情况和长度相等情况(这样为平行四边形或矩形),由于扣除的时候会重复扣掉重叠和相等,所以在加回来,这是容斥原理。
代码:
#include
#include
#in...
题目链接:Codeforces 439E Devu and Birthday Celebration
题目大意:给出q,表示询问的次数,每次询问有n和f,问有多少种分类方法,将n分成f份,并且这f份的最大共约数为1.
解题思路:如果不考虑说最大共约数为1的话,那么问题很简单,就是f个数的和为n的种数C(f?1n?1).所以我们就尽量将问题转化成说f数的和为s的子问题。用容斥原理,总的可...
分类:
其他好文 时间:
2014-06-28 07:02:46
阅读次数:
278
本题是思想挺难的题目,抽象思维要求挺高的。
使用动态规划法,首先要弄明白如何记录数据,并且明白记录的数据代表什么意义,否则是理解不了的。
这里也只是给出自己的理解,也许别人不一定能理解我为什么这样理解的。不过给出图,详细说明一下,希望我可以说清楚。
这里需要使用双重动态规划法了,首先定义第一个表tbl
这个表的数值,例如tbl[i][j]代表,从第一个点[1][1]到[i][j]点组成的(i-1) * (j-1)个方格,从点[1][1]出发想象发出射线到边界上所有点的总数。
如下图是i = 2, j =...
分类:
其他好文 时间:
2014-06-08 02:55:24
阅读次数:
560
12508 - Triangles in the Grid
题目链接
题意:给定一个n?m格子的矩阵,然后给定A,B,问能找到几个面积在A到B之间的三角形。
思路:枚举每一个子矩阵,然后求[0,A]的个数减去[0,B]的个数就是答案,然后对于每个子矩阵个数很好求为(n?r+1)?(m?c+1)。关键在于怎么求每个子矩阵的符合个数。
想了好久,参考别人题解才想出来,分3种情况...
分类:
其他好文 时间:
2014-06-05 01:09:44
阅读次数:
248
HDU 4832 Chess
思路:把行列的情况分别dp求出来,然后枚举行用几行,竖用几行,然后相乘累加起来就是答案
代码:
#include
#include
#include
using namespace std;
typedef long long ll;
const ll MOD = 9999991;
const int N = 1005;
int t, n, m, ...
分类:
其他好文 时间:
2014-05-25 21:55:04
阅读次数:
280
题目链接:hdu 3269 Convex
题目大意:给出n个点,问任选四个点可以组成多少个凸四边形。
解题思路:和uav11529的做法是一样的,只不过求的东西不一样。
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int N =...
分类:
其他好文 时间:
2014-05-25 18:38:17
阅读次数:
155
题目链接:hdu 2841 Visible Trees
题目大意:一个n?m的矩阵,每个整数点上有树,人站在(0,0)点,问可以看见多少棵树。
解题思路:和uva1393是一道相同类型的题目,只不过这道题目的n比较大,不能预处理。必须用另外一种方法。
将矩阵按照(0,0)和(n,m)两天连成的直线分成两部分,分别计算,但是(n,m)这条线被计算了两次,于是减掉1.
dp[i]表示这...
分类:
其他好文 时间:
2014-05-25 18:21:47
阅读次数:
227
题目链接:uva 11529 - Strange Tax Calculation
题目大意:给出若干个点,保证任意三点不共线,任意选三个点作为三角行,其他点若又在该三角形内,则算是该三角形内部的点,问所有情况的三角形平均每个三角形有多少个内部点。
解题思路:三角形的总数很容易求C(3n),现在就是要求各个三角形内部点的总数,同样我们可以反过来,求每个点在多少个三角形的内部。
然后我们...
分类:
其他好文 时间:
2014-05-25 16:34:51
阅读次数:
155
题目链接:uva 11038 - How Many O's?
题目大意:写出m到n之间的数,问需要写多少个0.
解题思路:f(x)表示从0到x需要写多少个0,于是给出区间[m,n]就有答案等于f(n)-f(m-1)。剩下的就是f(x)该如何求。枚举每个位置上可能为0的情况,这样就将这个数分成两个部分,在保证组成的数小于x的前提下,计算可以的组成方法。
例:x=12345,枚举十位为0...
分类:
其他好文 时间:
2014-05-21 15:01:51
阅读次数:
192