码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 712C Memory and De-Evolution(逆向思维)

时间:2016-09-17 09:28:43      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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

题意:有一个长度为 x 的等边三角形,你每次可以选择一条边减少其长度,当然减少之后,三条边仍然可以组成一个三角形。

最后要使其变成程度为 y ,的等边三角形(x > y),问要作几次操作。

 

思路:贪心即可,可是重点是反着贪,长度为 y 的等边三角形,每次增加一条边的长度使其变成长度为 x 的等边三角形。

如果正着贪心,一条边太短的话,很影响其他边变短的过程,总次数也不一定是最优。

 

代码:

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <queue>
#include <set>
#include <cmath>
#include <algorithm>
using namespace std;

const int N = 100007;
const int INF = (int)1e9 + 100;
const int MOD = (int)1e9 + 7;

int main()
{
    int x, y;
    while (scanf("%d%d", &x, &y) != EOF)
    {
        int v[4];
        v[1] = y, v[2] = y, v[3] = y;
        int cnt = 0;
        while (v[1] != x || v[2] != x || v[3] != x)
        {
            sort(v + 1, v + 4);
            int dif = v[3] + v[2] - 1;
            v[1] = dif > x ? x : dif;
            cnt++;
            //printf("%d %d %d\n", v[1], v[2], v[3]);
        }
        printf("%d\n", cnt);
    }
}

 

Codeforces 712C Memory and De-Evolution(逆向思维)

标签:

原文地址:http://www.cnblogs.com/burning-flame/p/5877936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!