CF 231 div2
来源:互联网 发布:mac安装dmg文件失败 编辑:程序博客网 时间:2024/06/18 14:03
A.呵呵
Code:a.cpp
B.Very Beautiful Number
题意:一个数a(p)a(p-1)a...a2a1 * x = a1a(p)a(p-1)...a3a2
思路:小学奥数,枚举个位,依次推出十位,百位,至于为什么是最小解,我当时写的时候还真没考虑
Code:b.cpp
C.Dominoes
题意:给出初始4种牌的个数,求一种摆放方法,使得每列中1的个数的最大值最小
思路:贪心。统计个数,01和10记为同一种,先摆11的,那行没摆完的,暂时先用01把那行补完,然后摆00的,最后摆剩下来的01和10,这个方向要根据前面第一次放01或10的那行的奇偶判断
Code:c.cpp
D.Physical Education and Buns
题意:将一组序列变成等差数列,求对于改变数字的最大改变量的最小值
思路:排序后,枚举生成的等差数列的差,用第一项和差产生一个等差数列,两个序列的差值,就是整个序列可左移右移的范围
用mx和mi记录两个序列差值的最大和最小情况,那么当前所需要的改变量为(mx-mi+1)/2
Code:d.cpp
E.Lightbulb for Minister
题意:给出两个凸包,求第二个凸包平面内的某个点,到第一个凸包上顶点的距离的平方和
思路:假设这个点是 (x,y) ,那么距离的平方和就是一个关于 x,y 的二元二次方程,用 _x2 , _x1 , _x0 分别表示 x^2 , x , 1 的系数,用 _y2 , _y1 , _y0 分别表示 y^2 , y , 1 的系数. 转化成求函数的最值 f(x,y)=_x2*x*x+_x1*x+_x0+_y2*y*y+_y1*y+_y0 。
那么这个函数的最解,应该是 _x = -b/(2a) =-_x1/2/_x2 , _y=-_y1/2/_y2 , 如果这个点在第二个凸包内,那么直接把答案带到函数里。
如果这个点不在凸包内,那么最优解应该在某条边上,那么枚举边上某点 x=q[i].x+k*dx , y=q[i].y+k*dy ,带到函数f(x,y)里面得到
f(q[i].x+k*dx ,q[i].y+k*dy) = _x2*(x+k*dx)*(x+k*dx) + _x1*(x+k*dx) + _x0 + _y2*(y+k*dy)*(y+k*dy) + _y1*(y+k*dy) + _y0
= (_x2*dx^2+_y2*dy^2)*k^2 + (2*x*dx*_x2+_x1*dx+2*y*dy*_y2+_y1*dy)*k + _x2*x^2+_x1*x+_x0+_y2*y^2+_y1*y+_y0
极值在 _k=-(2*x*dx*_x2+_x1*dx + 2*y*dy*_y2+_y1*dy ) / (2*_x2*dx^2 +2*_y2*dy^2 ) (0<=k<=1)
_k取得极值后,得到_x,_y ,带到函数 f(x,y) 里,求得最小值
Code:e.cpp
- CF 231 div2
- CF div2 231 C(贪心)
- CF 231div2 B. Very Beautiful Number
- cf 131 DIV2 B
- CF #148 DIV2 E
- CF #137 DIV2
- CF 149 div2感想
- CF-div2--149
- CF 154 Div2
- cf-#170-div2-后记
- cf#168div2
- cf#167div2
- cf#166div2
- CF 183(div2)
- CF 173(div2) B
- cf#div2--184
- CF 174(div2) D
- CF 165(div2)
- 5个Xcode开发调试技巧
- 2457: 很简单的一道题
- 三天的努力,只弄懂了一个多位数相加
- HDU 1568 Fibonacci
- 单选框值得选择
- CF 231 div2
- ADT的虚拟机慢到不能忍。。。。
- windows与linux网络设置(host-only)
- python 学习笔记
- cvDFT
- 浅谈工作中遇到的一个关于类初始化的问题
- 实现zip压缩解压
- Android 学习(三)下: UI 控件
- window下改svn服务(SVN UUID错误)(SVN UUID变更)(svn relocate报错)