- 博客(10)
- 资源 (2)
- 收藏
- 关注
原创 2008校赛总结
又是一年一度的ACM大赛,去年大一抱着保五争三的想法时不小心过关斩将击败了所有对手得了第一。今年我和队友实力都有所提高,希望能再一次卫冕……经过5个小时的艰苦角逐,最后的比赛结果是,我们做出6个题目,排名第二。第一的队伍同样是6个题目,但是由于我们错误次数太多,导致时间上差200分钟……这次比赛总共79支队伍参加。2支队伍做出6题;2支队伍做出5题;6支队伍做出4题;7支队伍做出3题;至少
2008-03-30 20:19:00 791 1
原创 ZJU2102 Tables - 计算几何 线段与圆相交
题目大意:输入n个圆形桌子的圆心和半径(从俯视的角度看),给出一根木棍两端点的坐标,问木棍会不会掉到地上。(n分析: 设木棍端点为a,b,因为木棍质量分布均匀,所以重心c一定在(a+b)/2处。1、若重心c点被包放在任何一个桌子上,则木棍不会掉;2、否则,若重心c两侧分别有一部分放在桌子上,木棍也不会掉。第一种情况需要判断点是否在圆内,很简单,判断点c到圆心的距离小于等于半
2008-03-28 18:14:00 3184
原创 ZJU1453 Surround the Trees - 计算几何 经典凸包
题目大意:给出n棵树的坐标,求最短用多长的绳子能把所有树围起来。(n分析:典型的凸包问题。首先用Graham算法求出点集的凸包,然后依次计算凸包上两点间距离即可。贴代码:/*ZJU1453 Surround the Trees*/#include #include #include #define N 105typedef struct{ int x,y;}
2008-03-28 16:43:00 1106
原创 最大公约数相关原理
去年某个时候总结的东西,这次做省赛题目时候就有一个“更相减损术”的题目,感觉这些细小的知识还是不能忽略,贴出来分享一下~辗转相除法辗转相除法,又称欧几里德(Euclid)算法,是欧几里德在约公元前300年提出的.用辗转相除法求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得
2008-03-23 20:57:00 4012 3
原创 HDU2108 Shape of HDU - 计算几何 判断凹凸多边形
题目描述:按逆时针顺序给出简单多边形的n个顶点坐标,判断该多边形是凸多边形还是凹多边形。分析:按照输入顺序依次将点连接起来对于连续的三个点p0,p1,p2,另向量a=p1-p0,b=p2-p1若是凸多边形,那么b相对于a一定是向逆时针方向旋转的判断两向量的旋转方向,可以使用向量的叉积 a×b = x1×y2 - x2×y1a×b > 0 b在a的逆时针方向a×b =
2008-03-20 16:35:00 2139
原创 PKU3363 Annoying painting tool - 超级构造法
BNUEP1202 PKU3363 Annoying painting tool题目大意:一个N×M的图片(N,M分析:题目描述看似搜索,其实可以用一个超级构造法直接得出结果。首先有一个很显然的限制条件:画笔在同一个位置最多画一次。原因很简单,若在同一位置画两次和不画是等价的。考虑最左上角的一个点,只有当画笔放在最左上角的时候才能改变其状态。若该点和目标图片一致,则不用
2008-03-09 16:45:00 1184
原创 PKU2941 Homogeneous Squares - 随机算法
BNUEP1201 PKU2941 Homogeneous Squares题目大意:一个N×N的数字矩阵, 若在矩阵中任意取N个数字,每个数字的行列互不相同,其和都是一个定值,则该矩阵是"Homogeneous"的,否则是"Not Homogeneous"。N分析:除了随机算法,没有想到更好的方法……判断一个矩阵是否是Homogeneous,则在矩阵中随机选取n个独立的点求和。
2008-03-08 12:00:00 1656
原创 ZJU2048 Highways - 最小生成树+合并连通分量
题目描述:一个小岛政府希望修建一些高速公路将所有村庄都连通。之前已经修建了k条公路,现在给出n个村庄的坐标,k条公路,问最少还需要多少费用建设高速公路。(n分析:此题和2006年广东省赛的一道题很类似,当时比赛的时候思路都很清晰且方向正确,但是由于对最小生成树和并查集都不熟做了很久还是没有调试成功……仔细分析题目,也就是一个变了形的求完全图最小生成树,用Prim算法就行。由于之
2008-03-07 21:56:00 1501
原创 ZJU2042 Divisibility - 动态规划
题目描述:给出n个整数,对每个整数取正或取负求和,可得2^n个数。问这些数当中是否存在一个数能被k整除。n分析:由于n特别大,直接按照题意求出2^n个数再判断必然是不行的。此题可考虑用动态规划。令e[i][j]表示前i个数求和的得数能否模k得到j,i从1开始。动态转移方程e[i][j]=abs(p±a[i])%k,其中e[i-1][p]==1。若最后e[n][0]==1则有解,
2008-03-07 17:29:00 1127
原创 C++游戏程序 - 龟兔赛跑Ⅳ
windows程序设计上的作业,由于还不知道怎么做窗口程序,就自己在字符界面下写了。其实界面不是最重要的,重要的是程序的逻辑部分。第一次写C++程序,对C++的类还不是很熟……龟兔赛跑Ⅳ ,运动员资料:-------------------------------------------------------------------------------------------运动
2008-03-02 22:28:00 3376 2
ACM竞赛代码整理 v0.6.pdf
2012-04-17
MFC程序-碰撞的小球
2008-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人