这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:the_great_wave_off_kanagawa:week_summary_7 [2020/07/24 15:44] airbust |
2020-2021:teams:the_great_wave_off_kanagawa:week_summary_7 [2020/07/24 17:38] (当前版本) lkw981105 [Ket98] |
||
---|---|---|---|
行 20: | 行 20: | ||
==== Ket98 ==== | ==== Ket98 ==== | ||
- | Boundary | + | Clam and Fish |
- | 分类:计算几何 | + | 分类:思维 |
- | 题目大意:考虑所有经过原点的圆,在所给$n$个点中,找出在同一个圆上最多的点的数量。 | + | 题目大意:有$n$个笼子,里面可能有(1)空(2)蛤蜊*1(3)鱼*1(4)鱼*1和蛤蜊*1。有四种操作:(1)把蛤蜊做成饲料供后边的笼子来使用(2)用饲料捕捉鱼(3)如果笼子有鱼,可直接捕捉鱼(4)什么都不做。问最多可以捕捉多少鱼? |
- | 思路:一开始因为测试用例,我错以为是以所给的点中选择一个点作为圆心,之后就一直错。其实圆心不局限在所给点中,只要圆经过所给点即可。利用圆周角的思路。先枚举所有的点$A$,然后在每一次枚举中在枚举一遍所有的点$B$,计算圆周角$ABO$的cos值,寻找出众数的数量。在每一次枚举的众数的数量,寻找最大的那一个即可。 | + | 思路:题目可能比较长,但其实矛盾点就是在蛤蜊*1的笼子应该是拿去作饲料还是拿去捕捉鱼。这里有两种解法。 |
- | 在寻找众数的时候,我是利用了sort()来找。同时本题在计算圆周角的时候,需要注意$B$点可能会在$AO$的任意一边,所以要用叉积判断一下,然后利用内接四边形对角互补来处理一下,即把cos值取负。最后,还需要注意共线点的处理,例如(0,1),(0,2)的答案应该为1。 | + | 比赛的时候我使用倒序读取,need记录目前所需的饲料。碰到空笼子则need++,碰到有蛤蜊的笼子分两种情况(1)need==0时用于捕捉鱼(2)need!=0时用于做饲料。有鱼的笼子全部捉鱼即可。 |
+ | |||
+ | 第二种是顺序读取,贪心把所有的蛤蜊做成饲料,最后把剩下的饲料/2,一半用于做饲料,一半用于捉鱼。 | ||
===== 个人 ===== | ===== 个人 ===== | ||
行 36: | 行 38: | ||
=== 比赛 === | === 比赛 === | ||
- | * [[https://atcoder.jp/contests/aising2020|AIsing Programming Contest 2020]] | + | 无 |
==== kazamori ==== | ==== kazamori ==== | ||
行 47: | 行 49: | ||
=== 比赛 === | === 比赛 === | ||
- | * [[https://atcoder.jp/contests/aising2020|AIsing Programming Contest 2020]] | + | 无 |