2013年8月5日
摘要: 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=533&page=show_problem&problem=4142提议:海中一个凸多边形小岛,求出岛上离海最远点到海的距离。思路:就是求这个凸多边形内切圆的最大半径。对半径进行二分,将多边形所有边向内平移半径的长度,然后求半平面交,如果有交则有满足的点。在poj上用g++交wa了,c++又过了。。。坑#include#include#include#include#include#includeusi 阅读全文
posted @ 2013-08-05 19:23 ∑求和 阅读(160) 评论(0) 推荐(0) 编辑
2013年8月4日
摘要: 没有想到这个题可以转化成解方程组的形式,就像线性规划一样,觉得好神奇。《训练指南》上的解析挺详细的,就不写了。#include#include#include#include#include#includeusing namespace std;const int maxn=110;const double eps=1e-8;struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y) {}};typedef Point Vector;struct DLine//有向直线directed line{ Poin... 阅读全文
posted @ 2013-08-04 18:47 ∑求和 阅读(154) 评论(0) 推荐(0) 编辑
2013年8月3日
摘要: 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4199题意:给出若干个正方形,求出他们的顶点中距离最大的两个点间的距离的平方。思路:很直接的求点集的直径,采用旋转卡壳算法。算法参考:http://www.cppblog.com/staryjy/archive/2010/09/25/101412.html#include#include#include#include#include#includeusing namespa 阅读全文
posted @ 2013-08-03 15:48 ∑求和 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1197题意:平面上n个红点,m个蓝点,问是否存在一条直线,使得任取一个红点和一个蓝点都在直线异侧。思路:可以把《训练指南》上的两个思路换一下顺序,求出两个凸包之后,先判断一个凸包上的点是否在另一个凸包内侧,不需要判断所有红色的点是否在蓝色凸包内,只要判断红凸包上的顶点就够了。再来判断线段相交,这时只要判断是否是规范相交就好了。觉得数据有点水。#include#include# 阅读全文
posted @ 2013-08-03 10:29 ∑求和 阅读(181) 评论(0) 推荐(0) 编辑
2013年8月2日
摘要: 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34780题意:给n个点,找一条直线,使得所有点在直线同侧,且到直线的平均距离最小。思路:先求出n个点围成的凸包,然后枚举凸包上的顶点,得到直线的一般方程,再计算出各点到直线的距离和。由于所有的点都在直线的同一侧,所以A*x0+B*y0+C的符号相同,故而可以求出所有点的x坐标和y坐标的和,总距离就很快算出来。注意凸包退化成一个点或者一条线段的情况,当退化成一个点时,A=B=0,除以sqrt(A*A+B*B)为无穷大,要特判一下,如果是一条线段,那结果就是0了。#inc 阅读全文
posted @ 2013-08-02 10:42 ∑求和 阅读(443) 评论(0) 推荐(0) 编辑
2013年7月29日
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:中文的。求若干个区间中工人的个数。思路:简单线段树,点修改。只更新叶子节点,然后把信息用PushUP(int r)这个函数更新上来。#include#include#include#include#includeusing namespace std;#define lson l,m,rt>1; build(lson); build(rson); PushUP(rt);}void update(int p,int add,int l,int r,int rt){//对p进行... 阅读全文
posted @ 2013-07-29 14:03 ∑求和 阅读(261) 评论(0) 推荐(0) 编辑
2013年7月22日
摘要: 链接:http://lightoj.com/volume_showproblem.php?problem=1163题意:一个数A,把它的最后一个数字去掉,得到一个新数B,给出A-B的值,求A。思路:找一下A,B,A-B之间的关系就行了。#includeusing namespace std;typedef unsigned long long LL;int main(){ int t,ca=1; LL c,a,b; scanf("%d",&t); while(t--) { scanf("%llu",&c); printf("Ca 阅读全文
posted @ 2013-07-22 22:04 ∑求和 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1345题意:给两个无限高的圆柱的半径,它们垂直放置,坐标轴相交,求相交部分的体积。思路:数值积分,用辛普森公式来算。把三重积分转化为一重的。假设半径为r1的圆柱沿y轴,r2的圆柱沿z轴,那么从x轴看过去,相交部分在yoz平面的切面是个矩形。矩形在y轴方向的长度为2*y=sqrt(r12-x2),在z轴方向上的长度为2*sqrt(r22- x2),这样积分算出来的体积是yoz平面上半部分的体积,还有下半部分的,总的体积要乘以2.如果是从z方向看过去,则平行于xOy平面所做 阅读全文
posted @ 2013-07-22 21:53 ∑求和 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3725题意:有n个格子,只能涂红、蓝两种颜色。要求至少有m个连续的格子涂上红色,求有多少种方法。思路:一开始是直接算,结果T了,不得不转变思想。要求至少m个格子连续的话,可以枚举连续m个格子的首位置。假如第i个格子开始往后的m个格子都是红色的,则后面的(n-(i+m)+1)个格子随意涂,有2^(n-(i+m)+1)种。此时第i-1个格子必然要为蓝色。且要求在前面的1到i-2个格子中不能有连续m个红格子。计前面i-2个格子有b[i]种放法。当i<m时,肯定不会出现连续 阅读全文
posted @ 2013-07-22 13:20 ∑求和 阅读(366) 评论(0) 推荐(0) 编辑
2013年7月21日
摘要: 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5043题意:给一个矩形,矩形内一个多边形,朝矩形内投掷落在某点上,由于磁力的作用,该点会移到离它最近的整点处,如果这个整点(x,y)在多边形内,则有分数S=A*x+B*y,求分数的平均期望。思路:枚举矩形内的整点,判断它是否在多边形内,如果在,那么有分数,计算出来。由于每个整点的吸收范围是[x-0.5,x+0.5],[y-0.5,y+0.5],所以相应的概率P为这个小矩形的面积除以大矩形的面积。期望即是Si 乘以P,再求和。期望公式 ∑ i*Pi .#include#i 阅读全文
posted @ 2013-07-21 20:41 ∑求和 阅读(388) 评论(0) 推荐(0) 编辑