首页 > 其他 > 详细

2019.10.14题解

时间:2019-10-14 23:00:52      阅读:93      评论:0      收藏:0      [点我收藏+]

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

2019.10.14题解

原文:https://www.cnblogs.com/AthosD/p/11674312.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!