zoukankan      html  css  js  c++  java
  • hdu 2615 Division(暴力)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2615

    题解:挺简单的暴力枚举,小小的分治主要是看没人写题解就稍微写一下

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    ll a[123] , ans , sum[123];
    struct TnT {
        ll one , another;
    }Max[123];
    bool cmp(TnT x , TnT y) {
        if(x.another == y.another) return x.one < y.one;
        return x.another > y.another;
    }
    int main() {
        int n;
        while(~scanf("%d" , &n)) {
            sum[0] = 0;
            for(int i = 1 ; i <= n ; i++) {
                scanf("%lld" , &a[i]);
                sum[i] = sum[i - 1] + a[i];
            }
            ans = 0;
            ll num[4];
            for(int i = 1 ; i < n ; i++) {
                int l1 = 1 , r1 = i;
                if(i == 1) {
                    int cnt = 0;
                    for(int j = i + 1 ; j < n ; j++) {
                        num[0] = a[l1] , num[1] = sum[j] - sum[l1] , num[2] = sum[n] - sum[j];
                        sort(num , num + 3);
                        Max[cnt].one = num[0] , Max[cnt++].another = num[1];
                    }
                    if(cnt) {
                        sort(Max , Max + cnt , cmp);
                        ans = max(ans , Max[0].one);
                    }
                }
                else if(i > 1 && i < n - 1) {
                    int cnt = 0;
                    for(int j = 1 ; j < i ; j++) {
                        num[0] = sum[j] , num[1] = sum[r1] - sum[j] , num[2] = sum[n] - sum[r1];
                        sort(num , num + 3);
                        Max[cnt].one = num[0] , Max[cnt++].another = num[1];
                    }
                    for(int j = i + 1 ; j < n ; j++) {
                        num[0] = sum[r1] , num[1] = sum[j] - sum[r1] , num[2] = sum[n] - sum[j];
                        sort(num , num + 3);
                        Max[cnt].one = num[0] , Max[cnt++].another = num[1];
                    }
                    if(cnt) {
                        sort(Max , Max + cnt , cmp);
                        ans = max(ans , Max[0].one);
                    }
                }
                else {
                    int cnt = 0;
                    for(int j = 1 ; j < i ; j++) {
                        num[0] = a[n] , num[1] = sum[j] , num[2] = sum[r1] - sum[j];
                        sort(num , num + 3);
                        Max[cnt].one = num[0] , Max[cnt++].another = num[1];
                    }
                    if(cnt) {
                        sort(Max , Max + cnt , cmp);
                        ans = max(ans , Max[0].one);
                    }
                }
            }
            printf("%lld
    " , ans);
            //printf("%I64d
    " , ans);
        }
        return 0;
    }
  • 相关阅读:
    java接口工厂模式理解
    ViewDragHelper的点击事件处理
    ViewDragHelper的使用
    路径跟踪 PathMeasure的简单使用
    view事件分发源码理解
    layoutInflater参数解析与源码分析
    安卓menu的介绍与使用
    安卓广播api介绍,给自己理清楚概念
    动态删除集合遇到的一些问题理解
    【翻译】借助 NeoCPU 在 CPU 上进行 CNN 模型推理优化
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/7309577.html
Copyright © 2011-2022 走看看