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
  • 相关阅读:
    1020. Tree Traversals
    1001. A+B Format
    centos 各类无线网卡编译
    vim 详细配置 超全
    深夜复习strcpy函数原型竟然暗藏着这么多玄机
    第一篇博客
    strcat函数使用中出现的问题
    strcpy与strncpy工作方式及其区别
    strcpy与面试官
    linux下多线程编程
  • 原文地址:https://www.cnblogs.com/zyue/p/4394747.html
Copyright © 2011-2022 走看看