zoukankan      html  css  js  c++  java
  • 最大值最小化

     1 #include<stdio.h>
     2 
     3 int a[10000];
     4 int n,m;
     5 
     6 int is_part(int u)
     7 {
     8     int sum,i,count,ok;
     9     sum=count=0;ok=1;
    10     for(i=0;i<n;i++)
    11     {
    12         if(a[i]>u)
    13         {
    14             ok=0;
    15             break;
    16         }
    17         if(sum+a[i]>u) 
    18         { 
    19             sum=a[i],
    20             count++;
    21             if(count==m)
    22             {
    23                 ok=0;
    24                 break;
    25             }
    26         }
    27         else    sum+=a[i];
    28     }
    29     return ok;
    30 }
    31 
    32 
    33 int fun(int x,int y)
    34 {
    35     int m;
    36     while(x<y)
    37     {
    38         m=x+(y-x)/2;
    39         if(is_part(m)) y=m;
    40         else x=m+1;
    41     }
    42     return x;
    43 }
    44 
    45 int main()
    46 {
    47     int i,j,max,sum;
    48     while(scanf("%d%d",&n,&m)!=EOF)
    49     {
    50         max=sum=0;
    51         for(i=0;i<n;i++)
    52         {
    53             scanf("%d",&a[i]);
    54             max=max>a[i]?max:a[i];
    55             sum+=a[i];
    56         }
    57         j=fun(max,sum);
    58         printf("%d\n",j);
    59         sum=0;
    60         for(i=0;i<n;i++)
    61         {
    62             sum+=a[i];
    63             if(sum>j) 
    64             {
    65                 sum=a[i];
    66                 printf("| ");
    67             }
    68             printf("%d ",a[i]);
    69         }
    70         printf("\n");
    71     }
    72     return 0;
    73 }
    74             
    75 /*
    76 6 3
    77 1 2 3 2 5 4
    78 
    79 
    80 7
    81 1 2 3 | 2 5 | 4
    82 */
     1 #include<stdio.h>
     2 
     3 int a[10000];
     4 int n,m;
     5 
     6 int is_part(int u)
     7 {
     8     int sum,i,count,ok;
     9     sum=count=0;ok=1;
    10     for(i=0;i<n;i++)
    11     {
    12         if(a[i]>u)
    13         {
    14             ok=0;
    15             break;
    16         }
    17         if(sum+a[i]>u) 
    18         { 
    19             sum=a[i],
    20             count++;
    21             if(count==m)
    22             {
    23                 ok=0;
    24                 break;
    25             }
    26         }
    27         else    sum+=a[i];
    28     }
    29     return ok;
    30 }
    31 
    32 
    33 int fun(int x,int y)
    34 {
    35     int m;
    36     while(x<y)
    37     {
    38         m=x+(y-x)/2;
    39         if(is_part(m)) y=m;
    40         else x=m+1;
    41     }
    42     return x;
    43 }
    44 
    45 int main()
    46 {
    47     int i,j,max,sum;
    48     while(scanf("%d%d",&n,&m)!=EOF)
    49     {
    50         max=sum=0;
    51         for(i=0;i<n;i++)
    52         {
    53             scanf("%d",&a[i]);
    54             max=max>a[i]?max:a[i];
    55             sum+=a[i];
    56         }
    57         j=fun(max,sum);
    58         printf("%d\n",j);
    59         sum=0;
    60         for(i=0;i<n;i++)
    61         {
    62             sum+=a[i];
    63             if(sum>j) 
    64             {
    65                 sum=a[i];
    66                 printf("| ");
    67             }
    68             printf("%d ",a[i]);
    69         }
    70         printf("\n");
    71     }
    72     return 0;
    73 }
    74             
    75 /*
    76 6 3
    77 1 2 3 2 5 4
    78 
    79 
    80 7
    81 1 2 3 | 2 5 | 4
    82 */
  • 相关阅读:
    HierarchicalDataTemplate
    Prism技巧
    常用Exception
    netcore URL重新路径
    Nintendo Switch相册整理
    交换变量-不借助任何变量
    QCombobox样式stylesheet总结
    Qt新旧Moc方式升级功能
    QSS使用方法总结
    【QRegExp】QLineEdit屏蔽空格
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/3053709.html
Copyright © 2011-2022 走看看