zoukankan      html  css  js  c++  java
  • codeforces 735C. Tennis Championship(贪心)

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

    题意:给你一个数n表示有几个人比赛问最多能赢几局,要求两个比赛的人得分不能相差超过1即得分为2的只能和得分为3,1的比赢一局

    得一分。

    由题意可得得分为i的人最少由最少的得分为i-1与i-2的人比赛得到所以我们设dp[i]表示得分为i的最少比赛人是多少

    所以dp[i]=dp[i-1]+dp[i-2]只要(dp[i - 1]<=n<dp[i])那么结果就是i-1。

    #include <iostream>
    #include <cstring>
    using namespace std;
    typedef long long ll;
    const int M = 110;
    ll dp[M];
    int main() {
        ll n;
        cin >> n;
        int ans = 0;
        dp[1] = 2;
        dp[0] = 1;
        for(int i = 2 ; i <= M - 1 ; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        for(int i = 1 ; i <= M - 1 ; i++) {
            if(n < dp[i] && n >= dp[i - 1]) {
                ans = i - 1;
                break;
            }
        }
        cout << ans << endl;
        return 0;
    }
    
    
  • 相关阅读:
    重定义自定义类型
    范式
    管理
    JVM调优[转]
    I/O相关的等待事件
    等待事件监测性能瓶颈
    Shared pool
    SQL*Plus和PL/SQL
    Oracle优化器和执行计划
    10053事件
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/6112036.html
Copyright © 2011-2022 走看看