codeforces 735C Tennis Championship(贪心+递推)

Tennis Championship

题目链接:http://codeforces.com/problemset/problem/735/C

    ——每天在线,欢迎留言谈论。

题目大意:

给你一个 n (2≤n≤10^18),代表一共有n位参加比赛的选手。

游戏规则:

①每次比赛,输的选手将离开赛场

②相互比赛的选手 他们的获胜的次数相差不能超过1(获胜4次的选手只能跟3或5次的选手比赛)

问题:最终赢得比赛的选手,胜场最多能为多少。

思路:

贪心:①选一名选手让他一直获胜且优先让他参加比赛

②当没有可比赛选手的时候(比如他胜为2时,其他选手胜场为0),就让另一个人的胜场达到比他少一场(恰好可以比赛),然后比赛输掉.

递推:

意思:产生一名胜场为x的选手,需要有y名选手出局

规律例:想要获得一胜5次的选手 需要 一名4次的选手+一名3次的选手 然后比赛后前者获胜后者出局。

n[i]=n[i-1]+n[i-2]+1(1为获胜 i-1 次的选手出局)

那么 : 答案就是n-1>=y对应的那个x对大的那个喽

AC代码:

 1 #include <iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 ll a[91]={0,1};
 5 int main()
 6 {
 7     for(int i=2;i<=90;i++)
 8     {a[i]=a[i-1]+a[i-2]+1;}
 9     ll n;
10     cin>>n;
11     n-=1;
12     for(int i=1;i<=90;i++)
13         if(n<a[i])
14         {
15             cout<<i-1<<endl;
16             return 0;
17         }
18     //通过计算a[90]已经为 7e18多了,为题目给定n 的3倍多!
19     cout<<"90"<<endl;
20     return 0;
21 }

2017-05-27 19:25:29

转载于:https://www.cnblogs.com/Twobox/p/6914221.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值