2019.10.14题解

A. 小P的2048

标签:

模拟

题解:

话说CWY暑假时还给过我一个2048的python程序

这道题很简单,题目中已经把实现方法给出来了,照着做就行

B. 小P的单调数列

标签:

Dp,BIT

题解:

很好的一道题,看似是数据结构优化Dp,

但是实际上考察的是对于下述性质的分析:

答案的序列里不同单调性的块最多有2个。

证明:

设一个序列有x,y两个块,考虑加入一个z

sum1=(x+y)/2,sum2=(x+y+z)/3;

令sum1<sum2解得(x+y)/2<z

但是我们发现这种情况下选x,y,z还不如只选z

所以无论如何,z都不可能对答案作出贡献。

证毕。

考场上运气不错,暴力拍暴力的时候发现小数点后面不是.0就是.5,

接着证明了一下就A掉了

接下来就是简单的Dp+BIT优化即可

 

C. 小P的生成树

标签:复数的转化,数形结合(说白了就是高考数学)+Kruskal

同样很好的一道题

算法1:

暴力枚举角度,把所以向量都映射到base向量上跑Kruskal即可,

枚举的间隔在0.01比较稳,上限大概是0.7或者0.8

实践证明这个算法可以碾爆标算。

算法2:

和上面的思路类似,

回想Kruskal的过程,我们只关注边权的相对大小,

考虑只枚举会使两条边的顺序变化的base,

设两条边分别为(x1,y1),(x2,y2),base的角度为z,令它们的映射相同,则:

x1*sin(z)+y1*cos(z)=x2*sin(z)+y2*sin(z);

tan(z)=(y2-y1)/(x1-x2); (x1==x2时z=pi/2或着3*pi/2)

z=atan(y2-y1)/(x1-x2)或atan(y2-y1)/(x1-x2)+pi

posted @ 2019-10-14 21:35  ATHOSD  阅读(116)  评论(0编辑  收藏  举报