[考试]20151008
1、前言
最近考试的一句话总结:能不考跪的时候就跪了,能虐场的时候就不去虐了。没错我昨天才写完的最近考试的一些特别傻的错误,然而今天又新增了一个,等会再讲,真是太(sang)开(xin)心(bing)了(kuang)。
2、Dis 最大跨距
大概题意:给出三个字符串a,b1,b2,要求b1和b2出现在a中,并且b1在b2左侧,且不重叠。由于可能出现多次,问b1和b2在a中的距离最大可以达到多少。
总结:题目不难,想到了就行了。没什么好说的。
题解:KMP。由于要求最大的距离,故b1尽量选左侧的,而b2尽量选右侧的,我们就可以考虑将字符串a正序与b用KMP匹配,匹配到第一个之后记录一下位置直接break;再将字符串a倒序与b2用KMP匹配,匹配到第一个之后(也就是实际的最后一个)记录一下位置直接break。然后把两次记录的位置求个差即可。
3、Cake 生日蛋糕
大概题意:在平面直角坐标系中,给出一个以原点为圆心的半径为r的圆,给出n条直线,求这些直线将这个圆划分为了多少部分。
总结:这题目也不难啊!(不过其实我的方法是可以去卡常数的,但是数据貌似并没有这么难为)显然是计算几何或是解析几何,只要小学或是初中做过什么切蛋糕这种问题的基本上都可以想到如何去判断个数。然而!然而!我被卡精度了!我作死把eps设为了1e-3,这精度判断和没判断一样。。。后来改成1e-7直接AC了。其实以前eps我一直设的是1e-3,感觉也没出什么问题。。应该是以前那几道的精度要求都是保留3位小数之内。这道题我用的是最基本的解析几何,用一次函数直接解方程,貌似用计算几何的都只有90分?(好像也是精度问题)
题解:我们从最简单的没有线看起,就是一整个圆,每多一条线(保证没有重叠的线),就会多至少一个新的区域。若这条线与其他线有交点,每有一个交点就会多一个区域(自己去感受)。但是,交点如果有重复的,只需要算一次,所以这是唯一需要进行一下判断的。一般情况下都是将所有交点排序,有复杂度保证O(n^2 log n),但是考场上并没有想到,用了最简单的标记,在最坏情况下时是可能高达O(n^3)的,没有复杂度保证。但是数据貌似不怎么丧病,所以在没有被卡精度的情况下是可以AC的(构建一个类似于菊花树的东西就行了)。