计算几何 西汉姆联校赛讲解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
凸包是什么? 一组平面上的点,求一个包含 所有点的最小的凸多边形,这 就是凸包问题了。 这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,并且为凸边形,这就是凸包了。 数学构造法——Jarvis 算法。 我们无法在计算机上实现直线的旋转,因而不能直接套用数学构造法,但是可以通过对点的扫描达到同样的目的。其实,绕着A 旋转l 找到的是与l 夹角最小的一条边,也是必然在凸包上的边。 数学构造法——Jarvis 算法。 Graham 算法。 //求多边形p[]的凸包,严格 void make_ch_jm_ex(PT p[], PT o[], int n, int top) { top = 0; sort(p, p + n); for (int i=0, j, k=1; i 2*n-1; i++) { j = (i n) ? i : 2*(n-1)-i; if (i==n) k = top; while (top k cpr(o[top-2], o[top-1], p[j]) eps) top--; o[top++] = p[j]; } top -- ; } //求多边形p[]的凸包,严格 void make_ch_gs_ex(PT p[], PT o[], int n, int top) { top = 0; curp = p[0]; sort(p + 1, p + n, cmp_angle); for (int i=0; in; i++) { while (top 1 cpr(o[top-2], o[top-1], p[i]) eps) top--; o[top++] = p[i]; } } O(nlogn)级别的算法似乎能够有效解决问题。 然而对于计算几何程序来说,运算往往涉及浮点数运算,一定存在浮点误差。 鲁棒性 比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性 一段不考虑精度的代码可能同时做出如此判断 R在pq左侧, p在qr的左侧, 且q是pr的左侧。 需要避免! 1.判点在凸多边形内或多边形边上,顶点按顺时针或逆时针给出 2.判点在凸多边形内,顶点按顺时针或逆时针给出,在多边形边上返回0 Problem B Problem C 下午@LAZ Problem D Problem E 下午@CLQ Problem F Problem G Problem H Problem J 水题 ?Problem B: 二分答案,用2-SAT判断是否可行。很多人直接套模板导致T,本来就是完全图,再枚举边再建图效率就低了很多。直接在跑2-SAT时当做完全图。一开始时限是给标程的4倍多,考虑到board的过题情况放到了10倍,但是大部分提交都是在标程10倍以上,最终是放到20倍以上。说卡常数的人请自己写写。 ? Problem D 给宝石编号,然后就可以用二进制状态表示。对于宝石旁边的每个空地都有四种放灯的方法,计算其可以照到的宝石的状态,这样每种情况的灯都可以看做一样物品,放在同个空地的灯属于同一组,于是化成了标准的分组背包问题。用M表示宝石的数量,复杂度就是O(M*2^m)。 Problem F 如果最终的班级排列顺序确定了,那么此时最小的交换次数就是逆序对的数目。假设有m个班级,那么只需要m!枚举出班级顺序然后求逆序对就可以了。用sum[]表示当前各班的人数,f[i][j]表示排在每个j班人前面的i班人数和,扫描一遍全部人,统计f[i][j],然后每次得出班级顺序就可以在O(m^2)中算出逆序对数目。总复杂度O(mn+m!*m^2)。 Problem G 考虑问题的反面,结合数据范围容易想到用容斥来做。 因为要求的是15个点对颜色都不同的方案数,那么转化为求“至少”i个点对颜色相同的方案数即可。求出(1 15)种情况的方案数之后再根据i的奇偶性容斥一下即可。 至少i个点对颜色相同的方案数也很好求。枚举哪些点对颜色相同之后,把这些边拿出来建图,跑一遍dfs求连通块数cnt(每个连通块内的点显然都为同色),于是该情况的方案数即为 m ^ cnt。 ? Problem H 与一般费用流不同的是,代价(二次函数)与费用的关系不是单调的。 那么建图的时候可以拆边:拆成数条流量为1的边,费用依次为f(1), f(2) - f(1), f(3) - f(2)…… 因为有0 c b a,所以费用非负且单调。这样就保证了流量为1,2,3……时代价对应到f(1),f(2),f(3)… struct PT { doub

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档