zoukankan      html  css  js  c++  java
  • Regionals 2014 Asia

    题意:将区间分成四分,使得每个区间内的个数比较平均。

    解题思路:暴力

    解题代码:

     1 // File Name: h.cpp
     2 // Author: darkdream
     3 // Created Time: 2015年04月04日 星期六 14时17分50秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #define LL long long
    25 
    26 using namespace std;
    27 int t ; 
    28 int n; 
    29 int num[200];
    30 int sum[200];
    31 int ans[4];
    32 int tmp[4];
    33 double mx = 1e9 ; 
    34 double pin;
    35 void dfs(int k,double val,int step)
    36 {
    37     if(step == 3)
    38     {
    39        val += fabs(sum[160] - sum[k] - pin);
    40        if(val < mx-(1e-8))
    41        {
    42            memcpy(ans,tmp,sizeof(tmp));
    43            mx = val;
    44        }
    45        return ;
    46     }
    47     for(int j = k+1;j < 160 ;j ++)    
    48     {
    49       tmp[step+1] = j;
    50       dfs(j,val + fabs(sum[j]- sum[k] - pin),step + 1);
    51     }
    52 }
    53 int main(){
    54     scanf("%d",&t);
    55     for(int CA = 1; CA <= t ; CA ++)
    56     {
    57        scanf("%d",&n);
    58        int k ; 
    59        int tp ; 
    60        mx = 1e9 ;
    61        memset(num,0,sizeof(num));
    62        memset(sum,0,sizeof(sum));
    63        for(int i = 1;i <= n;i ++)
    64        {
    65            scanf("%d",&tp); 
    66            num[tp] ++ ;
    67        }
    68        sum[0] = num[0];
    69        for(int i = 1;i <= 160;i ++)
    70            sum[i] = sum[i-1] + num[i];
    71        pin = n*1.0/4;
    72 
    73        for(int i= 0;i < 160; i ++)
    74        {
    75         tmp[1] = i; 
    76         dfs(i,fabs(sum[i]-pin),1);
    77        }
    78        printf("Case %d:",CA);
    79        for(int i= 1;i <= 3;i ++)
    80            printf(" %d",ans[i]);
    81        printf("
    ");
    82     }
    83 return 0;
    84 }
    View Code
  • 相关阅读:
    3. Node.js REPL(交互式解释器)
    2. npm 的使用
    hdu 6155 - Subsequence Count
    蒟蒻ACMer回忆录 · 一段弱校ACM的奋斗史
    Codeforces731F Video Cards
    Codeforces731E Funny Game
    Codeforces731D 80-th Level Archeology
    Codeforces732F Tourist Reform
    Codeforces732E Sockets
    Codeforces732D Exams
  • 原文地址:https://www.cnblogs.com/zyue/p/4394747.html
Copyright © 2011-2022 走看看