加载中…
  
博文
标签:

交点

线段

一元二次方程

圆上

端点

it

分类: Algorithm
因为一个程序里用到了这个算法,在这里记下来备忘

http://www.thecodeway.com/blog/wp-content/uploads/2011/04/csi.gif


    设线段的两个端点分别是P1(x1,y1)和P2(x2,y2),圆的圆心在P3(x3,y3),半径为r,那么如果有交点P(x,y)的话

http://www.thecodeway.com/blog/wp-content/uploads/2011/04/csi_2.gif


    其中,u在0到1之间,转换成各个坐标

http://www.thecodeway.com/blog/wp-content/uploads/2011/04/csi_3.gif


    由于P也在圆上,所以

http://www.thecodeway.com/blog/wp-content/uploads/2011/04/csi_4.g

标签:

斐波那契

非负整数

数列

程序代码

分治法

it

分类: Algorithm
描述

斐波那契数列是指如下数列: F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2).数列的前10个数如下:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
对于给定的数n,请求出F(n)的后四个数字.

 

关于输入

输入包括多组数据.
每组数据为一行,包含一个非负整数n(0<=n<=1000000000).
输入的最后一行是一个数-1,表示输入结束.

 

关于输出
对于每组数据,你的程序应该输出F(n)对10000取模的结果.

 

解题思路:

分析斐波那契数列,我们容易得出这样一个结论:

2 x 2的矩阵{F(n+1), F(n) ; F(n), F(n-1)} = {F(n), F(n-1) ; F(n-1), F(n-2)} *{1, 1 ; 1, 0}

而{F(2), F(1) ; F(1), F(0)} = {1, 1 ; 1, 0},所以可以得出{F(n+1), F(n) ; F(n), F(n-1)

标签:

马来

齐王

田忌赛马

贪心算法

it

分类: Algorithm

题目描述:

你一定听过田忌赛马的故事吧?
如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。
请问田忌最多能赢多少银子?

 

关于输入
输入包含多组测试数据.
每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐王的马的速度。
输入的最后以一个0表示结束。

 

关于输出
对每组数据,输出一个整数,表示田忌至多可以赢多少银子,如果田忌赢不了,就输出一个负数,表示田忌最少要输多少银子。

 

解题思路:

算法可以用DP,或者给每匹马连线赋权变为二分图最佳匹配,还有就是贪心了。
1.当田忌最慢的马比齐王最慢的马快,赢一场先
2.当田忌最慢的马比齐王最慢的马慢,和齐王最快的马比,输一场
3.当田忌最快的马比齐王最快的马快时,赢一场先。
4.当田忌最快的马比齐王最快的马慢时,拿最慢的马

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有