• hdu6789 Fight(暴力枚举)


    #include<bits/stdc++.h>
    typedef  long long ll ;
    #define mod 99999997
    #define gcd __gcd
    #define rep(i , j , n) for(int i = j ; i <= n ; i++)
    #define red(i , n , j)  for(int i = n ; i >= j ; i--)
    #define ME(x , y) memset(x , y , sizeof(x))
    #define INF  0x3f3f3f3f
    #define PI acos(-1)
    #define pii pair<int,int>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define all(v) v.begin(),v.end()
    #define size(v) (int)(v.size())
    #define lson l,mid,root<<1
    #define rson mid+1,r,root<<1|1
    #define int ll
    using namespace std;
    const int maxn = 1e5+9;
    const int N = 35;
    
    //此题要抓住本质,最优解与打架的先后顺序无关,只与ab,bc,ac各打了几次
    //所以枚举ab,bc打了几次.就能确定ac打了几次答案取最小值
    void solve(){
        int x , y , z ;
        scanf("%lld%lld%lld" , &x , &y , &z);
        int xy = di((ll)1000 , max(x , y));
        int yz = di((ll)1000 , max(y , z));
        int ans = INF;
        rep(i , 0 , xy){//枚举ab
            int fa = 1000 - i*y;
            int fb = 1000 - i*x;
            int fc = 1000 ;
            rep(j , 0 , yz){
                int b = fb - j*z;
                int c = fc - j*y;
                int a = fa ;
                int k = 0;
                if(a > 0 && b > 0 && c > 0){
                    if(di(a , z) == di(c , x)){//如果ac能够同时消灭,则是一组解,否则不能组成一组解
                        ans = min(ans , i+j+di(a , z));
                    }
                    continue;
                }
                if(a > 0 && b > 0 && c <= 0){//c已经被消灭
                    k = min(di(a , y) , di(b , x));
                    ans = min(ans , i+j+k);
                }
                else if(b > 0 && c > 0 && a <= 0){//a已经被消灭
                    k = min(di(b , z) , di(c , y));
                    ans = min(ans , i+j+k);
                }
                else if(a > 0 && c > 0 && b <= 0){//b已经被消灭
                    k = min(di(a , z) , di(c , x));
                    ans = min(ans , i+j+k);
                }
                else{//已经有两个消灭了
                    ans = min(ans , i+j);
                }
            }
        }
        printf("%lld
    " , ans);
    }
    
    signed main()
    {
    /*#ifdef ONLINE_JUDGE
    #else
        freopen("D:\c++\in.txt", "r", stdin);
    #endif*/
        int t ; scanf("%lld" , &t); while(t--)
            solve();
    }
    
    
  • 相关阅读:
    使用自绘控件详细步骤转
    对话框上如何创建视图
    c++ 分割字符串存入数组
    在对话框上创建视图的报错》ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd>IsChild(pParentFrame))
    CMFCOutlookBarTabCtrl 不显示了
    常用加密算法概述
    [两个月,黎巴嫩]贝鲁特守望
    [C#]XmlDocument_修改xml文件操作.
    wordpress之客户端发布文章
    大二上躺平经验
  • 原文地址:https://www.cnblogs.com/nonames/p/13381431.html
Copyright © 2020-2023  润新知