为了练习java和近来结冰的脑子,做了做这套题,下面简略的总结下
题目地址:http://acm.hust.edu.cn/thx/contest.php?cid=1075
A:
题目描述:定义两类函数D(x)和F(x)
其中D(x)表示x的数字位
如果 x<10 F(x)=x 否则F(x)=F(D(x))
做法:直接暴力
B:
题目描述:对于两瓶k级的药,可以合成1瓶k+1级的药
给定一个N,表示N个等级,给定一个f表示卖价是买价的f倍
给定N个数,表示每个等级的买价
做法:枚举相邻的比较 pre*2与 now*f的大小关系即可
C:
呜呜不会~~
D:
题目描述:给定n个人,m件糖
给出n个人对糖果的个数的需求范围[L[i],R[i]]
求有多少种方案
做法:DP
dp[i][j]表示前i个人用了j件糖果的方案数
那么对于i这个人dp[i][j]=sum(dp[i-1][k])(max(0,j-R[i])<=k<=j-L[i])
转移可以用树状数组或者线段树优化,也可以预处理出来
复杂度n*m
E:
饿就是一个排序的模拟,按成绩算排名
F:
我采用的是非完美的算法
详细请点击http://blog.csdn.net/foreverlin1204/archive/2011/01/11/6128197.aspx
G:
挺不错的一个数学题,暂时还没做出来
大概意思是:给定n个三维点(n<=10000)
对于三个不同的点组成的点对i,j,k
|x[i],y[i],z[i]|
det[i,j,k]= |x[j],y[j],z[j]|
|x[k],y[k],z[k]|
如果行列式值是3的倍数则计数器++
问总共有多少对,欢迎和我探讨
H:
按照题目给的公式算就可以了
I:
一个概率期望题
详细请点击http://blog.csdn.net/foreverlin1204/archive/2010/12/20/6087335.aspx
J:
题目描述:给定一棵树,求每个点的孩子数
分析:dfs一遍即可
K:
求四面体体积
详细请点击http://blog.csdn.net/foreverlin1204/archive/2011/01/08/6124184.aspx
L:
给定n个数字的序列,给定m个操作
有两类:(1)交换位置在x和y上的两个元素(2)交换值为x和y的两个元素
设定a[i]表示位置i上的值, b[i]表示值为i的位置,构建双映射维护即可
个人推荐,比较有意思的三题:F G I
以上基本上代码都是用java写的,从中发现了不少的问题,对我这个java菜鸟而言
比如排序规则,比如如何正确使用容器,比如何时要用public static不能乱用,特别是类成员