zoukankan      html  css  js  c++  java
  • [CF712C]Memory and De-Evolution(暴力,逆解)

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

    题意:给你一个变长为x的正三角形,问通过几步可以变成变长为y的正三角形,每一步都要维持三角形的形态。

    看样例的话会发现从x到y变换的时候超麻烦,于是我倒着看了一眼样例…发现每一次更新的都是最小的那条边,除了第一个样例为了凑那个22,其实也无所谓了。因为凑出第一个大于x的边以后,步骤+2其实就是所求的答案了。

    所以每次找最大的两条边,两条边边长和-1给第三条边,一直加到三条边都是x为止。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 using namespace std;
    20 #define fr first
    21 #define sc second
    22 #define cl clear
    23 #define BUG puts("here!!!")
    24 #define W(a) while(a--)
    25 #define pb(a) push_back(a)
    26 #define Rint(a) scanf("%d", &a)
    27 #define Rs(a) scanf("%s", a)
    28 #define Cin(a) cin >> a
    29 #define FRead() freopen("in", "r", stdin)
    30 #define FWrite() freopen("out", "w", stdout)
    31 #define Rep(i, len) for(int i = 0; i < (len); i++)
    32 #define For(i, a, len) for(int i = (a); i < (len); i++)
    33 #define Cls(a) memset((a), 0, sizeof(a))
    34 #define Clr(a, x) memset((a), (x), sizeof(a))
    35 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
    36 #define lrt rt << 1
    37 #define rrt rt << 1 | 1
    38 #define pi 3.14159265359
    39 #define RT return
    40 #define lowbit(x) x & (-x)
    41 #define onecnt(x) __builtin_popcount(x)
    42 typedef long long LL;
    43 typedef long double LD;
    44 typedef unsigned long long ULL;
    45 typedef pair<int, int> pii;
    46 typedef pair<string, int> psi;
    47 typedef pair<LL, LL> pll;
    48 typedef map<string, int> msi;
    49 typedef vector<int> vi;
    50 typedef vector<LL> vl;
    51 typedef vector<vl> vvl;
    52 typedef vector<bool> vb;
    53 
    54 int x, y;
    55 int a[5];
    56 
    57 int main() {
    58   // FRead();
    59   while(~Rint(x)&&~Rint(y)) {
    60     if(y*2>x) {
    61       puts("3");
    62       continue;
    63     }
    64     if(y*2==x) {
    65         puts("4");
    66         continue;
    67     }
    68     Rep(i, 3) a[i] = y;
    69     int ret = 0;
    70     while(1) {
    71       sort(a, a+3);
    72       bool flag = 0;
    73       Rep(i, 3) {
    74         if(a[i] != x) flag = 1;
    75       }
    76       if(!flag) break;
    77       int tmp = a[1] + a[2] - 1;
    78       if(tmp > x) tmp = x;
    79       a[0] = tmp;
    80       ret++;
    81     }
    82     printf("%d
    ", ret);
    83   }
    84   RT 0;
    85 }
  • 相关阅读:
    android studio Cannot resolve symbol '@drawable/XXX'等问题解决办法
    android面试
    Android动态增量
    客户端传递Cookie到WebView中
    Android事件传递机制
    Activity状态保存的两种方式
    Activity Window View之间的关系
    Git学习笔记
    Android Log命令常用方法
    ListView 中点击Item中的Button删除当前行
  • 原文地址:https://www.cnblogs.com/kirai/p/5861203.html
Copyright © 2011-2022 走看看