一。基础题目
1.1 有固定算法的题目
A, 最近点对问题
最近点对问题的算法基于扫描线算法。
ZOJ
2107 Quoit Design 典型最近点对问题
POJ 3714 Raid 变种最近点对问题
B,最小包围圆
最小包围圆的算法是一种增量算法,期望是O(n)。
ZOJ 1450 Minimal Circle
HDU 3007 Buried memory
C,旋转卡壳
POJ 3608 Bridge Across Islands 旋转卡壳解两凸包最小距离
POJ 2079 Triangle 旋转卡壳计算平面点集最大三角形
1.2 比较简单的题目
HDU 3264 Open-air shopping malls ,圆面积相交问题,如果用二分法做的话不难
CII 3000 Tree-Lined Streets,几何+贪心
CII 4676 Geometry Problem,模板题
HDU 3272 Mission Impossible,枚举+镜面反射思想
POJ 3334 Connected Gheeves,二分答案,面积判定
POJ 1819 Disks,模拟一下
CII 3905 Meteor,貌似还是比较简单
ZOJ 2589 Circles,平面图的欧拉定理,圆的相交
POJ 2194 Stacking Cylinders,向量旋转
二。经典算法
2.1 三角剖分
三角剖分这个东西貌似去年流行了一下,高校联赛时某U连续出了两次。实际上对多边形进行三角剖分是一个很常见的算法思想,因为三角形是一个比较简单的凸多边形,可以对两个三角形比较容易地求公共面积,这也是三角剖分最常见的用途。对这个算法进行扩展,就可以求两个简单多边形的面积交了。主要是理解有向面积的概念。
第一类是圆与三角形的相交,主要做法是分情况讨论。
POJ 3675 Telescope 三角形剖分,圆与三角形的交
POJ 2986 A Triangle and a Circle 三角形剖分,圆与三角形的交
ZOJ 2675 Little Mammoth 三角形剖分,圆与三角形的交
第二类是多边形与多边形相交。
HDU 3060 Area2 简单多边形面积并,三角剖分
三角形剖分的另一种变种是梯形剖分,应用起来稍有局限性,但是比三角形剖分好写。
POJ 3148 ASCII Art 多边形梯形剖分,半平面交
多边形的重心问题,也是三角形剖分的应用:
CII 4426 Blast the Enemy!
2.2 极角排序
顾名思义,极角排序一般就是有一个圆心的问题,将平面上各个点按照与圆心极角进行排序。然后就可以在线性扫描之中解决一些统计问题。不过这类问题就稍稍超出计算几何范畴了。
UVA 11696 Beacons 颇为经典的极角排序的统计问题,记得darkgt大牛有一篇文章提到这个题目。
CII 4064 Magnetic Train Tracks,极角排序的统计问题,补集思想。
UVA 11704 Caper pizza
POJ 2280 Amphiphilic Carbon Molecules,极角排序相当巧妙地解决了这个问题。
2.3 扫描线算法
扫描线算法,需要使用到平衡树辅助,写起来比较复杂(对于本菜而言)。关于平衡树,我建议是直接使用STL的set或map。所以你需要掌握一些C++的知识,才能够看懂一份使用了map与set的代码。当年学习OI牛的代码我看得很纠结。不过只要理解了“事件点”这一个概念后就比较好办了。
HDU 3124 Moonmist 二分+扫描线。最近圆对,不存在改编最近点对的方法。不过当时数据弱,很多人乱搞过了
POJ 2927 Coneology 平衡树+扫描线,与上题类似。
下面两个题目都是关于多边形的扫描线算法,关于平面上许多凸多边形套了多少层的问题。
CII 4125 Painter ,这个是Final题,比较简单,是判断三角形嵌套层数的。
UVA 11759 IBM Fencing,上题是三角形,这题是多边形,稍稍难了一点。不过理解好扫描线算法的话应该没有问题。
2.4 其他题目
POJ 3528 Ultimate Weapon,模板化的三维凸包。知道几个三维有向体积的概念即可比较容易理解三维凸包的算法。三维凸包算法又是一种增量算法。
三。不确定算法/极值问题
POJ 3301 Texas Trip ,算是一种模拟退火求极值的问题,通过平面旋转找到最佳答案。
SPOJ 4409 Circle vs Triangle(AREA1),也是模拟退火
UVA 11562 Hard Evidence,应用三分极值法求极值。
四。传统几何、公式题
UVA有一个名叫Shahriar Manzoor喜欢出这些题目,喜欢这类题目的同志可以研究一本名叫《近代欧式几何学》的书。不过这些题目一般中学几何知识能够解决。
CII 4413 Triangle Hazard,梅涅劳斯定理,想不到SCNU校赛出到了
UVA 11524 InCricle,三角形内切圆性质联立海伦公式
CII 4714 In-circles Again,还是公式推导
POJ 2208 Pyramids,欧拉四面体公式
五。几何结合其他算法,麻烦题
转自:
http://www.cppblog.com/zzfmars/articles/121794.html
HDU 2297 Run,百度杯的题目,利用到了zzy的半平面交的极角排序思想。
CII 4448 Conduit Packing,问一个大圆能否放下四个小圆。颇为变态的Final题,算法都很基础,就是二分一个答案,枚举两个已知圆,求与已知的两圆公切的第三个圆,枚举放置的位置……关键是不好想。
CII 4510 Slalom 几何+最短路
UVA 11422 Escaping from Fractal Bacterium ,麻烦题,主要还是向量旋转。
HDU 3228 Island Explorer,利用了最小生成树的性质。
CII 4499 Camera in the Museum,有关圆形处理的,很不错的题目。
CII 2395 Jacquard Circuits,Pick公式的应用
POJ 3747 Scout YYF II,又是一个几何问题,需要猜想一下。
POJ 3336 ACM Underground,几何预处理,并查集
CII 4428 Solar Eclipse,也是不错的题目,涉及圆的问题
CII 4206 Magic Rings,dancing links解重复覆盖问题,二分,百度杯也有个类似的题目。
POJ 1263 Reflections,与下面一个题目都是一类光线在球面上反射问题。解决方法是解析几何,参数方程,向量旋转等等。
CII 4161 Spherical Mirrors,上面题目的三维版本。
POJ 3521 Geometric Map,复杂的预处理,可以用于自虐
CII 3270 Simplified GSM Network 虽然有着V图的模型,但是规模小,所以无须出动V图算法,用半平面交即可。变态级的V图算法可以咨询三鲜教主。
CII 4617 Simple Polygon,平面上有一堆点,叫你用一笔画把这些点连起来,连成一个闭合的简单多边形,线不允许出现相交。改造一下凸包算法即可。
当然,除了上述的题目外,还有许多比较精彩的计算几何题目等待大家发掘。
contest3
1:并查集 poj1417
2:双联通分量 poj 2942
3:A*/IDA* poj 3460
4:字符串 poj 1229
5:burnside定理polya计数法 poj 2888
6:网络流poj 1637
7:网络流poj 1815
8:费用流poj 3680
9:DP优化hdu 3669
10:数论poj 2992
11:博弈 hdu1907
12:几何:hdu3239
【转载】博弈题目总结
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个
人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏
,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够
取胜。
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规
定每次至少取一个,最多取m个。最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,
后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果
n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走
k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的
取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十
个,谁能报到100者胜。
(二)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同
时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,…,n)表示
两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们
称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,
10)、(8,13)、(9,15)、(11,18)、(12,20)。
可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k,奇异局势有
如下三条性质:
1。任何自然数都包含在一个且仅有一个奇异局势中。
由于ak是未在前面出现过的最小自然数,所以有ak > ak-1 ,而 bk= ak + k > ak
-1 + k-1 = bk-1 > ak-1 。所以性质1。成立。
2。任意操作都可将奇异局势变为非奇异局势。
事实上,若只改变奇异局势(ak,bk)的某一个分量,那么另一个分量不可能在其
他奇异局势中,所以必然是非奇异局势。如果使(ak,bk)的两个分量同时减少,则由
于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势。
3。采用适当的方法,可以将非奇异局势变为奇异局势。
假设面对的局势是(a,b),若 b = a,则同时从两堆中取走 a 个物体,就变为了
奇异局势(0,0);如果a = ak ,b > bk,那么,取走b – bk个物体,即变为奇异局
势;如果 a = ak , b < bk ,则同时从两堆中拿走 ak – ab – ak个物体,变为奇异局
势( ab – ak , ab – ak+ b – ak);如果a > ak ,b= ak + k,则从第一堆中拿走多余
的数量a – ak 即可;如果a < ak ,b= ak + k,分两种情况,第一种,a=aj (j < k)
,从第二堆里面拿走 b – bj 即可;第二种,a=bj (j < k),从第二堆里面拿走 b – a
j 即可。
从如上性质可知,两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜
;反之,则后拿者取胜。
那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:
ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,…,n 方括号表示取整函数)
奇妙的是其中出现了黄金分割数(1+√5)/2 = 1。618…,因此,由ak,bk组成的矩形近
似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若a=[
j(1+√5)/2],那么a = aj,bj = aj + j,若不等于,那么a = aj+1,bj+1 = aj+1
+ j + 1,若都不是,那么就不是奇异局势。然后再按照上述法则进行,一定会遇到奇异
局势。
(三)尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的
物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首
先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是
(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一
下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变为(0,n,n)的情
形。
计算机算法里面有一种叫做按位模2加,也叫做异或的运算,我们用符号(+)表示
这种运算。这种运算和一般加法不同的一点是1+1=0。先看(1,2,3)的按位模2加的结
果:
1 =二进制01
2 =二进制10
3 =二进制11 (+)
———————
0 =二进制00 (注意不进位)
对于奇异局势(0,n,n)也一样,结果也是0。
任何奇异局势(a,b,c)都有a(+)b(+)c =0。
如果我们面对的是一个非奇异局势(a,b,c),要如何变为奇异局势呢?假设 a < b
< c,我们只要将 c 变为 a(+)b,即可,因为有如下的运算结果: a(+)b(+)(a(+)
b)=(a(+)a)(+)(b(+)b)=0(+)0=0。要将c 变为a(+)b,只要从 c中减去 c-(
a(+)b)即可。
例1。(14,21,39),14(+)21=27,39-27=12,所以从39中拿走12个物体即可达
到奇异局势(14,21,27)。
例2。(55,81,121),55(+)81=102,121-102=19,所以从121中拿走19个物品
就形成了奇异局势(55,81,102)。
例3。(29,45,58),29(+)45=48,58-48=10,从58中拿走10个,变为(29,4
5,48)。
例4。我们来实际进行一盘比赛看看:
甲:(7,8,9)->(1,8,9)奇异局势
乙:(1,8,9)->(1,8,4)
甲:(1,8,4)->(1,5,4)奇异局势
乙:(1,5,4)->(1,4,4)
甲:(1,4,4)->(0,4,4)奇异局势
乙:(0,4,4)->(0,4,2)
甲:(0.4,2)->(0,2,2)奇异局势
乙:(0,2,2)->(0,2,1)
甲:(0,2,1)->(0,1,1)奇异局势
乙:(0,1,1)->(0,1,0)
甲:(0,1,0)->(0,0,0)奇异局势
甲胜。
取火柴的游戏
题目1:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根,
可将一堆全取走,但不可不取,最后取完者为胜,求必胜的方法。
题目2:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根,
可将一堆全取走,但不可不取,最后取完者为负,求必胜的方法。
嘿嘿,这个游戏我早就见识过了。小时候用珠算玩这个游戏:第一档拨一个,第二档拨两个,依次直到第五档拨五个。然后两个人就轮流再把棋子拨下来,谁要是最后一个拨谁就赢。有一次暑假看见两个小孩子在玩这个游戏,我就在想有没有一个定论呢。下面就来试着证明一下吧
先解决第一个问题吧。
定义:若所有火柴数异或为0,则该状态被称为利他态,用字母T表示;否则,
为利己态,用S表示。
[定理1]:对于任何一个S态,总能从一堆火柴中取出若干个使之成为T态。
证明:
若有n堆火柴,每堆火柴有A(i)根火柴数,那么既然现在处于S态,
c = A(1) xor A(2) xor … xor A(n) > 0;
把c表示成二进制,记它的二进制数的最高位为第p位,则必然存在一个A(t),它二进制的第p位也是1。(否则,若所有的A(i)的第p位都是0,这与c的第p位就也为0矛盾)。
那么我们把x = A(t) xor c,则得到x < A(t).这是因为既然A(t)的第p位与c的第p位同为1,那么x的第p位变为0,而高于p的位并没有改变。所以x < A(t).而
A(1) xor A(2) xor … xor x xor … xor A(n)
= A(1) xor A(2) xor … xor A(t) xor c xor … xor A(n)
= A(1) xor A(2) xor… xor A(n) xor A(1) xor A(2) xor … xor A(n)
= 0
这就是说从A(t)堆中取出 A(t) – x 根火柴后状态就会从S态变为T态。证毕
[定理2]:T态,取任何一堆的若干根,都将成为S态。
证明:用反证法试试。
若
c = A(1) xor A(2) xor … xor A(i) xor … xor A(n) = 0;
c’ = A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = 0;
则有
c xor c’ = A(1) xor A(2) xor … xor A(i) xor … xor A(n) xor A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = A(i) xor A(i’) =0
进而推出A(i) = A(i’),这与已知矛盾。所以命题得证。
[定理 3]:S态,只要方法正确,必赢。
最终胜利即由S态转变为T态,任何一个S态,只要把它变为T态,(由定理1,可以把它变成T态。)对方只能把T态转变为S态(定理2)。这样,所有S态向T态的转变都可以有己方控制,对方只能被动地实现由T态转变为S态。故S态必赢。
[定理4]:T态,只要对方法正确,必败。
由定理3易得。
接着来解决第二个问题。
定义:若一堆中仅有1根火柴,则被称为孤单堆。若大于1根,则称为充裕堆。
定义:T态中,若充裕堆的堆数大于等于2,则称为完全利他态,用T2表示;若充裕堆的堆数等于0,则称为部分利他态,用T0表示。
孤单堆的根数异或只会影响二进制的最后一位,但充裕堆会影响高位(非最后一位)。一个充裕堆,高位必有一位不为0,则所有根数异或不为0。故不会是T态。
[定理5]:S0态,即仅有奇数个孤单堆,必败。T0态必胜。
证明:
S0态,其实就是每次只能取一根。每次第奇数根都由己取,第偶数根都由对
方取,所以最后一根必己取。败。同理, T0态必胜#
[定理6]:S1态,只要方法正确,必胜。
证明:
若此时孤单堆堆数为奇数,把充裕堆取完;否则,取成一根。这样,就变成奇数个孤单堆,由对方取。由定理5,对方必输。己必胜。 #
[定理7]:S2态不可转一次变为T0态。
证明:
充裕堆数不可能一次由2变为0。得证。 #
[定理8]:S2态可一次转变为T2态。
证明:
由定理1,S态可转变为T态,态可一次转变为T态,又由定理6,S2态不可转一次变为T0态,所以转变的T态为T2态。 #
[定理9]:T2态,只能转变为S2态或S1态。
证明:
由定理2,T态必然变为S态。由于充裕堆数不可能一次由2变为0,所以此时的S态不可能为S0态。命题得证。
[定理10]:S2态,只要方法正确,必胜.
证明:
方法如下:
1) S2态,就把它变为T2态。(由定理8)
2) 对方只能T2转变成S2态或S1态(定理9)
若转变为S2, 转向1)
若转变为S1, 这己必胜。(定理5)
[定理11]:T2态必输。
证明:同10。
综上所述,必输态有: T2,S0
必胜态: S2,S1,T0.
两题比较:
第一题的全过程其实如下:
S2->T2->S2->T2-> …… ->T2->S1->T0->S0->T0->……->S0->T0(全0)
第二题的全过程其实如下:
S2->T2->S2->T2-> …… ->T2->S1->S0->T0->S0->……->S0->T0(全0)
下划线表示胜利一方的取法。 是否发现了他们的惊人相似之处。
我们不难发现(见加黑部分),S1态可以转变为S0态(第二题做法),也可以转变为
T0(第一题做法)。哪一方控制了S1态,他即可以有办法使自己得到最后一根(转变为
T0),也可以使对方得到最后一根(转变为S0)。
所以,抢夺S1是制胜的关键!
为此,始终把T2态让给对方,将使对方处于被动状态,他早晚将把状态变为S1.
推荐HDOJ题目
hdu 1907
http://acm.hdu.edu.cn/showproblem.php?pid=1907
http://acm.hdu.edu.cn/showproblem.php?pid=2509
看完上面的结论,就能顺利解决上面2道了
S-Nim
http://acm.hdu.edu.cn/showproblem.php?pid=1536
http://acm.hdu.edu.cn/showproblem.php?pid=1944
博弈算法入门小节 1536 1517 1907
小子最近迷途于博弈之中。。。感触颇深。
为了让大家能够在学习博弈的时候少走弯路,最重要的也是为了加深自己的影响,温故而知新,特发此贴与大家共勉。
学博弈先从概念开始:
特别推荐LCY老师的课件:博弈入门。
下载地址: http://acm.hdu.edu.cn/forum/read.php?tid=6875
这个课件个人认为从博弈的基本思想,一直到解博弈的中心算法做了很好的诠释。但是特别要注意的是。课件后面一部分英语写的讲义是重中之重。小子英语很弱,在这困扰很久。现在为大家大概介绍一下。
主要是后继点和SG值的问题:
SG值:一个点的SG值就是一个不等于它的后继点的SG的且大于等于零的最小整数。
后继点:也就是按照题目要求的走法(比如取石子可以取的数量,方法)能够走一步达到的那个点。
具体的有关SG值是怎么运用的希望大家自己多想想。
课件后面有一个1536的代码。可以放在后面做做
看到这里推荐大家做几道题:1846(最简单的博弈水题)
1847(求SG值)
有了上面的知识接下来我们来看看组合博弈(n堆石子)
推荐大家看个资料:
博弈-取石子游戏(推荐等级五星级)
http://acm.hdu.edu.cn/forum/read.php?fid=20&tid=5748
http://hi.baidu.com/netnode/blog/item/30932c2edc7384514fc226ea.html
这里提出了一个奇异状态的问题。看了这篇文章你会发现异或运算在博弈中使用的妙处。当然这里指出的只是组合博弈中一种特殊情况。
王道还是对SG值的求解,但是知道这么一种思路无疑对思维的广度和深度扩展是很有帮助的。
ZZ博弈
http://acm.hdu.edu.cn/forum/read.php?fid=9&tid=10617
这里介绍了组和博弈的两种大的类型,一种是最后取的是N状态一种是最后取的是P状态,两个状态的解题方法能看懂很有帮助。当然,能够把推导过程理解,吃透无疑是大牛级的做法~小子也佩服的紧~
1536题推荐做做这题,这题前面提醒大家是一个求SG值的题目,题目前面是对异或运算运用在组合博弈问题中的很好的解释。当然题目本身是有所不同的。因为在这里面对取法有所要求。那么这样就回归到了解决博弈问题的王道算法——求SG值上。
有关运用求SG值的博弈题目有: 1850(也可基于奇异状态异或)
1848(中和的大斐波那契数列的典型求SG值题)
1517(个人认为有点猥琐的题目。。。。在此题上困扰很久。当然搞出来很开心。小子是用比较规矩的求SG值的方法求出来的,但是论坛有人对其推出来了规律,这里佩服一下,大家可以学习一下)
1079(更猥琐的题目,对新手要求较高,因为按传统方法需要比较细致的模拟加对边角状态的考虑,同样有人推出来了公式)
当你全部看完以上的东西。做完以上的题目的话。。。小子恭喜你~你博弈入门了~~~~
这里小子告诉大家。博弈很强大。学习要耐心~谢谢
Current System Time : 2008-12-11 19:16:03
【转载】组合数学题目总结
转载自:http://viva-villa.org/2010/08/acm%E7%BB%84%E5%90%88%E6%95%B0%E5%AD%A6%E9%A2%98%E7%9B%AE%E5%88%97%E8%A1%A8.html
基本组合计数
HDU
1028 Ignatius and the Princess III 整数划分
HIT
1402 整数划分问题 多种整数划分
解题报告:点击进入查看
置换群
PKU
2369 求置换的周期
1026 求置换的循环节
1721 置换的幂运算
3270 置换的循环节,黑书题
1879 模拟+置换的循环节
HDU
1537 求三阶魔方的置换
置换群相关资料:点击进入下载
Polya定理
HDU
1812 Count the Tetris polya定理
1817 Necklace of Beads polya定理
2481 Toy
HIT
2084 The Colored Cubes
2647 Megaminx
PKU
1286 Necklace of Beads
2409 Let it Bead
2154 Color
2888 Magic Bracelet
TJU
2795 The Queen’s New Necklaces
1341 Let it Bead
3352 Birthday Toy
UVa
10601 Cubes
11255 Necklace
NUAA
1110
SGU
282 Isomorphism
SPOJ
422 Transposing is Even More Fun
Polya定理总结:点击进入查看
容斥原理
HDU
2204 Eddy’s爱好
3208 Integer’s Power
1796 How many integers can you find
2841 Visible Trees
1695 GCD
ZJU
2836 Number Puzzle
3233 Lucky Number
URAL
1036 Lucky tickets
1091 Tmutarakan exams
1114 Boxes
PKU
1091 跳蚤
SGU
476 Coach’s Trouble
HUST
1214 Cubic-free numbers II
【转载】矩阵乘法的题目总结
转载自:http://acm.hdu.edu.cn/forum/read.php?tid=15908
http://acm.hdu.edu.cn/showproblem.php?pid=1575
http://acm.hdu.edu.cn/showproblem.php?pid=1757
赤裸裸的两道
http://acm.hdu.edu.cn/showproblem.php?pid=2256
这题正解不是矩阵,不过如果推出公式来的话可以用矩阵解
http://acm.hdu.edu.cn/showproblem.php?pid=2604
推公式吧,推完后矩阵求解(也是道正解不是矩阵的题)
http://acm.fzu.edu.cn/problem.php?pid=1683
我的第一道矩阵,不过求和的话比一般的难一点点
方法有两个.
1.增加一维,重新构造和的函数
2.详细见 http://acm.hdu.edu.cn/forum/read.php?tid=8137&keyword=%BE%D8%D5%F3
http://acm.hdu.edu.cn/showproblem.php?pid=1588
此题同上题一样
http://acm.hdu.edu.cn/showproblem.php?pid=3117
两个部分,前一个是黄金分割比,后一个是最裸的矩阵
http://acm.hdu.edu.cn/showproblem.php?pid=2254
经典题目,见下边资料
http://acm.hdu.edu.cn/showproblem.php?pid=2276
比较有趣并且隐藏的比较深的题
http://acm.fzu.edu.cn/problem.php?pid=1692
同上题一个原理,不过时限很紧,要降维优化
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2853
07年省赛题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2974
08年省赛题
http://acm.hdu.edu.cn/showproblem.php?pid=2855
联合训练题
http://acm.hdu.edu.cn/showproblem.php?pid=2971
有点难推的公式
http://acm.hdu.edu.cn/showproblem.php?pid=2294
难题
【转载】字符串题目总结
转载:http://hi.baidu.com/zfy0701/blog/item/440e923e1bc4183870cf6c89.html
POJ 1002 - 487-3279(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1002
题意:略
解法:二叉查找数,map,快排...
POJ 1200 - Crazy Search(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1200
题意:找出不相同的子串数量,字母表大小和子串长度会给定,这题很推荐hash入门者一做
解法:hash(建议karp-rabin)
POJ 1204 - Word Puzzles(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1204
题意:基本多串匹配
解法:多串匹配自动机(单串去弄肯定会超时)
POJ 1229 - Wild Domains(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1229
题意:模糊匹配
解法:dp
POJ 1625 - Censored!(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1625
题意:求长度为n不包括给定模式串的字符串数量。(题意同2778,但不能按2778的方法,建议先做此题,再做2778)
解法:Aho-Corasick自动机 + dp
相关:http://hi.baidu.com/zfy0701/blog/item/c62f41afca8180ca7cd92a19.html
POJ 1743 - Musical Theme(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1743
题意:找一个串中最长不重叠子串
解法:后缀数组+二分枚举答案,后缀数组+栈扫描,RK+二分枚举答案
相关:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
POJ 1816 - Wild Words(中等,绝对的Trie应用好题,同时又是搜索好题)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1816
题意:扩展多串模式匹配(含?, *)
解法:Trie + dfs,有兴趣也可用基于位并行的自动机(可参考柔性字符串匹配,扩展匹配章节)
POJ 2185 - Milking Grid(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2185
题意:最小矩型的覆盖
解法:KMP (不多的KMP好题)
相关:http://acm.pku.edu.cn/JudgeOnline/showmessage?message_id=33571
POJ 2513 - Colored Sticks(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2513
题意:转化成欧拉回路
解法:并查集+hash,并查集+Trie
POJ 2774 - Long Long Message(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2774
题意:找两个串的公共最长子串
解法:后缀数组,Oracle Factor自动机,后缀自动机
相关:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
http://hi.baidu.com/zfy0701/blog/item/d9fedbd14581113d9b5027ab.html
POJ 2778 - DNA Sequence(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2778
题意:求长度为n不包括给定模式串的字符串数量。
解法:Aho-Corasick自动机(前缀树) + 矩阵快速乘法
相关:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
类似于1625,建议先做1625
POJ 1699 - Best Sequence(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1699
题意:转换为TSP问题(注意子串的包含关系!)
解法:回溯,状态dp
POJ 3376 - Finding Palindromes(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3376
题意:找回文串组合
解法:找出规律,然后Trie + kmp推广形式
POJ 3415 - Common Substrings(较难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3415
题意:统计两个串中长度>=k的公共子串的数量
解法:后缀数组+栈扫描,后缀自动机
相关:http://hi.baidu.com/zfy0701/blog/item/f2278a0928991dca3bc763a0.html
POJ 3080 - Blue Jeans(如果用暴力,就很简单)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3080
题意:求n个串的最长公共子串
解法:后缀数组+栈扫描,后缀数组+二分枚举,暴力
相关:http://hi.baidu.com/zfy0701/blog/item/57ada7edf5f44ed1b31cb1cc.html
POJ 3208 - Apocalypse Someday(较难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3208
题意:略
解法:有意思的自动机dp
POJ 3261 - Milk Patterns(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3261
题意:求一个串中重复出现至少k次的最长子串
解法:后缀数组+栈扫描,hash + 二分
POJ 3294 - Life Forms(较难,强烈推荐)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3294
题意:n个串中,为大于n/2个串所共有的所有最长子串
解法:后缀数组+栈扫描,暴力(很容易被卡掉),后缀数组+线段树(?)
相关:http://hi.baidu.com/zfy0701/blog/item/57ada7edf5f44ed1b31cb1cc.html
POJ 3576 - Language Recognition(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3576
题意:求一个dfa,它满足两个条件,1、能识别所有词的dfa,2、要求状态数最少。
解法:trie + hash
相关:http://hi.baidu.com/zfy0701/blog/item/b8332b5cd90e7b45fbf2c033.html
POJ 3581 - Sequence(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3581
题意:把原串分三段并反转,求字典序最小的那串
解法:后缀数组
本来觉得很水,但却是我目前做得最失败的一道后缀数组题
POJ 3630 - Phone List(基础,强烈推荐用此题练Trie)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3630
题意:给n个串,看是否有一个串是另一个串的前缀
解法:快排,Trie
POJ 3690 - Constellations(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3690
题意:二维串匹配
解法:转换为一维,或者用多串匹配
POJ 3691 - DNA repair(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3691
题意:修复非法字符串需要替换的最少字符数
解法:动态规划,如果使用AC自动机去做dp的话比较简单且只需要二维,用dp[i][j]表示第i个字符时,第j种状态(不是非法状态)所需要最小的修改量
POJ 3693 - Maximum repetition substring(难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3693
题意:求最循环节最多的子串
解法:我所知道的最好的做法应该是先做s-factorization(也就是lempel-ziv),然后在分解之后的每一段中枚举周期,周期可以通过推导关系式确定是否合法,然后可确定循环次数,取最大的,中间还用到了对kmp的扩展。具体来说有KK算法,和ML算法两种,其中ML不能遍历所有的runs。
其他OJ:
SPOJ 2743 - Prefix Tiling
http://www.spoj.pl/problems/PRETILE/
找规律
空罐 Cans(这个自动机dp还是有意思的)
http://cat.nknush.kh.edu.tw/ZeroJudge/ShowProblem?problemid=b179
HDOJ 2471 - History of Languages(杭州现场赛)
http://acm.hdu.edu.cn/showproblem.php?pid=2471
自动机的等价性,划分集合的dp
HDU 2967 - Morphing is fun
http://acm.hdu.edu.cn/showproblem.php?pid=2967
UVA上也过得人比较少的一道题,需要分情况讨论几种情况,我09年过的最得意的题
【转载】数学题目总结
转自:http://www.cppblog.com/zzfmars/articles/121335.html
1.burnside定理,polya计数法
这个大家可以看brudildi的《组合数学》,那本书的这一章写的很详细也很容易理解。最好能完全看懂了,理解了再去做题,不要只记个公式。
*简单题:(直接用套公式就可以了)
pku2409 Let it Bead
http://acm.pku.edu.cn/JudgeOnline/problem?id=2409
pku2154 Color
http://acm.pku.edu.cn/JudgeOnline/problem?id=2154
pku1286 Necklace of Beads
http://acm.pku.edu.cn/JudgeOnline/problem?id=1286
*强烈推荐:(这题很不错哦,很巧妙)
pku2888 Magic Bracelet
http://162.105.81.212/JudgeOnline/problem?id=2888
2.置换,置换的运算
置换的概念还是比较好理解的,《组合数学》里面有讲。对于置换的幂运算大家可以参考一下潘震皓的那篇《置换群快速幂运算研究与探讨》,写的很好。
*简单题:(应该理解概念就可以了)
pku3270 Cow Sorting
http://acm.pku.edu.cn/JudgeOnline/problem?id=3270
pku1026 Cipher
http://acm.pku.edu.cn/JudgeOnline/problem?id=1026
*置换幂运算:
pku1721 CARDS
http://162.105.81.212/JudgeOnline/problem?id=1721
pku3128 Leonardo's Notebook
http://162.105.81.212/JudgeOnline/problem?id=3128
*推荐:(不错的应用)
pku3590 The shuffle Problem
http://162.105.81.212/JudgeOnline/problem?id=3590
3.素数,整数分解,欧拉函数
素数是可能数论里最永恒,最经典的问题了(我们的队名就叫PrimeMusic^-^)。素数的判断,筛法求素数,大素数的判断···还有很多其他问题都会用到素数。
*最水最水的:(心情不爽时用来解闷吧)
pku1365 Prime Land
pku2034 Anti-prime Sequences
pku2739 Sum of Consecutive Prime Numbers
pku3518 Prime Gap
pku3126 Prime Path
pku1595 Prime Cuts
pku3641 Pseudoprime numbers
pku2191 Mersenne Composite Numbers
pku1730 Perfect Pth Powers
pku2262 Goldbach's Conjecture
pku2909 Goldbach's Conjecture
*筛法:
pku2689 Prime Distance(很好的一个应用)
http://162.105.81.212/JudgeOnline/problem?id=2689
*反素数:
zoj2562 More Divisors
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2562
*素数判断,整数分解:
这两题都要用到miller_rabin的素数判断和pollard_rho的整数分解,算法书上都会有,应该是属于模板题吧,不过最好看懂自己敲一遍。
pku1811 Prime Test
http://acm.pku.edu.cn/JudgeOnline/problem?id=1811
pku2429 GCD & LCM Inverse
http://acm.pku.edu.cn/JudgeOnline/problem?id=2429
*欧拉函数:
数论里很多地方都能用到欧拉函数,很重要的。
pku1284 Primitive Roots (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1284
pku2407 Relatives (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2407
pku2773 Happy 2006
http://162.105.81.212/JudgeOnline/problem?id=2773
pku2478 Farey Sequence (快速求欧拉函数)
http://162.105.81.212/JudgeOnline/problem?id=2478
pku3090 Visible Lattice Points (法雷级数)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3090
*推荐:(欧拉函数,费马小定理)
pku3358 Period of an Infinite Binary Expansion
http://acm.pku.edu.cn/JudgeOnline/problem?id=3358
*整数分解
这个也很重要的耶,包括大数的表示方法。
pku2992 Divisors
http://acm.pku.edu.cn/JudgeOnline/problem?id=2992
fzu1753 Another Easy Problem
http://acm.fzu.edu.cn/problem.php?pid=1753
hit2813 Garden visiting
http://acm-hit.sunner.cn/judge/show.php?Proid=2813
pku3101 Astronomy (分数的最小公倍数)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3101
4.扩展欧几里得,线性同余,中国剩余定理
这应该是数论里比较重要的一个部分吧,这类的题目也挺多,具体的内容最好先看看数论书,我也整理过一些,可以参考参考:
http://hi.baidu.com/%B1%BF%D0%A1%BA%A2%5Fshw/blog/item/0676025d56a87d4afbf2c093.html
*简单题:
pku1006 Biorhythms
http://acm.pku.edu.cn/JudgeOnline/problem?id=1006
pku1061 青蛙的约会
http://acm.pku.edu.cn/JudgeOnline/problem?id=1061
pku2891 Strange Way to Express Integers
http://acm.pku.edu.cn/JudgeOnline/problem?id=2891
pku2115 C Looooops
http://acm.pku.edu.cn/JudgeOnline/problem?id=2115
pku2142 The Balance
http://162.105.81.212/JudgeOnline/problem?id=2142
*强烈推荐:
sgu106 The equation
http://acm.sgu.ru/problem.php?contest=0&problem=106
pku3708 Recurrent Function (经典)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3708
5.约瑟夫环问题
这个问题还是比较有意思的,不是很难。
*简单题:
pku3517 And Then There Was One
http://acm.pku.edu.cn/JudgeOnline/problem?id=3517
pku1781 In Danger
http://acm.pku.edu.cn/JudgeOnline/problem?id=1781
pku1012 Joseph
http://162.105.81.212/JudgeOnline/problem?id=1012
pku2244 Eeny Meeny Moo
http://162.105.81.212/JudgeOnline/problem?id=2244
*推荐:
pku2886 Who Gets the Most Candies?
http://162.105.81.212/JudgeOnline/problem?id=2886
6.高斯消元法解方程
其实解方程并不是很难,就是按线性代数中学的那种方法,把系数矩阵化成上三角矩阵或数量矩阵,不过有些题目要判断是否有解,或枚举所有解。不过这类题目我认为比较难的还是怎么去建立这个方程组,这个理解了,就没什么大问题了。
*简单题:
pku1222 EXTENDED LIGHTS OUT
http://162.105.81.212/JudgeOnline/problem?id=1222
pku1681 Painter's Problem
http://162.105.81.212/JudgeOnline/problem?id=1681
pku1830 开关问题
http://162.105.81.212/JudgeOnline/problem?id=1830
*推荐:
pku2947 Widget Factory
http://162.105.81.212/JudgeOnline/problem?id=2947
pku2065 SETI
http://162.105.81.212/JudgeOnline/problem?id=2065
*强烈推荐:
pku1753 Flip Game
http://162.105.81.212/JudgeOnline/problem?id=1753
pku3185 The Water Bowls
http://162.105.81.212/JudgeOnline/problem?id=3185
*变态题:
pku1487 Single-Player Games
http://162.105.81.212/JudgeOnline/problem?id=1487
7.矩阵
用矩阵来解决问题确实很常见,但我现在用到还不是很好,很多难题我还不会做。建议大家可以去看Matrix67的那篇关于矩阵的十个问题,确实很经典,但不太好看懂。
*简单:
pku3070 Fibonacci
http://162.105.81.212/JudgeOnline/problem?id=3070
pku3233 Matrix Power Series
http://162.105.81.212/JudgeOnline/problem?id=3233
pku3735 Training little cats
http://162.105.81.212/JudgeOnline/problem?id=3735
8.高次同余方程
有关这个问题我应该是没什么发言权了,A^B%C=D,我现在只会求D和B,唉,很想知道A该怎么求。就先推荐几道题目吧,这里涉及到了一个baby-step,giant-step算法。
fzu1759 Super A^B mod C
http://acm.fzu.edu.cn/problem.php?pid=1759
pku3243 Clever Y
http://162.105.81.212/JudgeOnline/problem?id=3243
pku2417 Discrete Logging
http://162.105.81.212/JudgeOnline/problem?id=2417
hdu2815 Mod Tree
http://acm.hdu.edu.cn/showproblem.php?pid=2815
9.容斥原理,鸽巢原理
很有用的两个定理,但好像单独考这两个定理的不是很多。
*鸽巢原理:
pku2365 Find a multiple
http://162.105.81.212/JudgeOnline/problem?id=2356
pku3370 Halloween treats
http://162.105.81.212/JudgeOnline/problem?id=3370
*容斥原理:
hdu1695 GCD
http://acm.hdu.edu.cn/showproblem.php?pid=1695
hdu2461 Rectangles
http://acm.hdu.edu.cn/showproblem.php?pid=2461
10.找规律,推公式
这类题目的设计一般都非常巧妙,真的是很难想出来,但只要找到规律或推出公式,就不是很难了。我很多都是在参考别人思路的情况下做的,能自己想出来真的很不容易。
*个人感觉都挺不错的:
pku3372 Candy Distribution
http://162.105.81.212/JudgeOnline/problem?id=3372
pku3244 Difference between Triplets
http://162.105.81.212/JudgeOnline/problem?id=3244
pku1809 Regetni
http://162.105.81.212/JudgeOnline/problem?id=1809
pku1831 不定方程组
http://162.105.81.212/JudgeOnline/problem?id=1831
pku1737 Connected Graph
http://162.105.81.212/JudgeOnline/problem?id=1737
pku2480 Longge's problem
http://162.105.81.212/JudgeOnline/problem?id=2480
pku1792 Hexagonal Routes
http://acm.pku.edu.cn/JudgeOnline/problem?id=1792
11.排列组合,区间计数,计数序列
这些题目可能需要一些组合数学知识,基本上高中的知识就够了。区间计数问题一般不难,但写的时候需要仔细一些,各种情况要考虑到位。至于像卡特兰数,差分序列,斯特灵数···都还挺有意思,可以去看看《组合数学》。
*简单题:
pku1850 Code
http://162.105.81.212/JudgeOnline/problem?id=1850
pku1150 The Last Non-zero Digit
http://162.105.81.212/JudgeOnline/problem?id=1150
pku1715 Hexadecimal Numbers
http://162.105.81.212/JudgeOnline/problem?id=1715
pku2282 The Counting Problem
http://162.105.81.212/JudgeOnline/problem?id=2282
pku3286 How many 0's?
http://162.105.81.212/JudgeOnline/problem?id=3286
*推荐:
pku3252 Round Numbers
http://162.105.81.212/JudgeOnline/problem?id=3252
*计数序列:
pku1430 Binary Stirling Numbers
http://162.105.81.212/JudgeOnline/problem?id=1430
pku2515 Birthday Cake
http://acm.pku.edu.cn/JudgeOnline/problem?id=2515
pku1707 Sum of powers
http://acm.pku.edu.cn/JudgeOnline/problem?id=1707
12.二分法
二分的思想还是很重要的,这里就简单推荐几个纯粹的二分题。
*简单:
pku3273 Monthly Expense
http://162.105.81.212/JudgeOnline/problem?id=3273
pku3258 River Hopscotch
http://162.105.81.212/JudgeOnline/problem?id=3258
pku1905 Expanding Rods
http://162.105.81.212/JudgeOnline/problem?id=1905
pku3122 Pie
http://162.105.81.212/JudgeOnline/problem?id=3122
*推荐:
pku1845 Sumdiv
http://acm.pku.edu.cn/JudgeOnline/problem?id=1845
13.稳定婚姻问题
无意中接触到这个算法,还蛮有意思的,《组合数学》中有详细的介绍。
pku3487 The Stable Marriage Problem
http://acm.pku.edu.cn/JudgeOnline/problem?id=3487
zoj1576 Marriage is Stable
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1576
14.数位类统计问题
在航点月赛中第一次接触到这类问题,scau大牛little龙推荐我看了一篇论文,09年刘聪的《浅谈数位类统计问题》,这篇论文相当精彩,也相当详细,每道题都有详细的分析和作者的参考代码。所以我也没什么可说的了,这些题的代码我博客里也就不贴了,大家直接去看论文吧。
简单:
ural1057 Amount of degrees
http://acm.timus.ru/problem.aspx?space=1&num=1057
spoj1182 Sorted bit squence
https://www.spoj.pl/problems/SORTBIT/
hdu3271 SNIBB
http://acm.hdu.edu.cn/showproblem.php?pid=3271
较难:
spoj2319 Sequence
https://www.spoj.pl/problems/BIGSEQ/
sgu390 Tickets
http://acm.sgu.ru/problem.php?contest=0&problem=390
【转载】图论题目总结
摘要: 转自 : http://hi.baidu.com/studyrush/blog/item/08ba35012c755383d43f7ce2.html最短路问题此类问题类型不多,变形较少POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec)... 阅读全文
contest(2)
1:并查集 poj1417
2:双联通分量 poj 2942
3:A*/IDA* poj 3460
4:DP poj3709
5:字符串 poj 3415
6:burnside定理polya计数法 poj 2888
7:矩阵构造 hdu 2855
8:概率 poj3071
9:博弈 poj1085
10:欧拉函数 poj 3358
11:多个圆求并面积+容斥原理 hdu 3119
contest1
10.2:
1: 表达式求值 //POJ 1460
题意:给你一个正则表达式,然后其中有一些符号是?表示一个通配符。因为通配符只有10个,所以可以2^10枚举暴力去做。看求出来的值是否等于所给的值。
解法:递归下降的做法。按照递归下降那个论文的伪代码写就很简单了,其实递归下降写表达式比栈写简单的很多。
难点:表达式的合法性判断,对于字符串表达式的处理。
2:全局最小割 Stoer-Wagner算法(最小割):poj 2914
1. 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和.
2. 对刚才选定的s, 更新W(A,p)(该值递增).
3. 选出A外一点p, 且W(A,p)最大的作为新的s, 若A!=G(V), 则继续2.
4. 把最后进入A的两点记为s和t, 用W(A,t)更新cut.
5. 新建顶点u, 边权w(u, v)=w(s, v)+w(t, v), 删除顶点s和t, 以及与它们相连的边.
6. 若|V|!=1则继续1.
3:DLX(最小支配集)//hdu3529 【 Bomberman - Just Search!】 最小支配集
4:DP优化单调队列 // hdu 3401 Trade
每天只能买入,卖出,不交易三种选择
买入,卖出用单调队列优化
5:后缀数组 //ural1297
6: FFT // hdu 1402 A*B
模板题
7: 容斥原理 //sgu 476 Coach’s Trouble
8:高斯消元 // poj 1487
题目大意:
给定一棵树,然后从树根开始遍历儿子节点,每个分支等概率,每个叶子结点都有一个分数值,遍历到该结点则得到该外结点的分数值,求最后能得到的分数值的期望值。
解法:如果对应每一个结点列一个线性方程,则列出的方程我们只需对其进行解基本的线性方程组即可。题目一大难点在于如何遍历树,然后求得线性方程组。这里不会做,最后看标程的,用基本的递归就解决了。而且其使用高斯消元的时候还用了floyd的传递闭包,以得到一些相连的集合,说明给的数据不仅仅是简单的树,可能会有森林出现。
难点:如何把表达式转换成为线性方程组
9:概率题条件概率与Bayes定理 //poj 3716
10:NIM游戏及变形 //poj 2960
博弈,用SG函数。经典NIM改一点点,SG(x)=mex{SG(x-S[i])}。
11:多圆交面积 // hdu 3467
题意:给你五个圆,问你这五个圆的交面积大小,如果交面积为一个点的话,输出这个点,如果不相交,则输出2010。。。
解法:多个圆交面积,先处理内包含和重复圆,还有不相交的情况,剩下的就是相交的情况了的。
对于每个圆,让他与其他的圆求交点,然后按照逆时针为正方向去形成一段弧,然后把所有的弧求一个交集。求的弧求一段弓形面积,还有把两个端点放入一个集合中,最后把集合中的点形成的多边形的面积求出来,把所有面积的有向面积加和就是最后的结果了的。
难点:弧求交集。圆求交点。