zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    史上自定义 JavaScript 函数Top 10
    switch
    (不)扩展内置原型((Not) Augmenting Built-in Prototypes)
    for-in循环(for-in Loops)
    for
    在dreamweaver中设置php服务器F12预览的方法介绍
    method
    CSS中background-image【CSS Sprites,base64编码】
    shell编程中的小问题
    常见的linux问题积累
  • 原文地址:https://www.cnblogs.com/Twobox/p/6914221.html
Copyright © 2011-2022 走看看