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 */
  • 相关阅读:
    VMware虚拟机安装红帽系统无法上网解决办法(转)
    二维指针的malloc内存分配(转)
    c语言中如何通过二级指针来操作二维数组
    如何把一个二维数组的地址赋给一个二维指针?
    二维数组及二维指针的传递及一些思考(转)
    js怎么让时间函数的秒数在页面上显示是变化的
    jquery 实现各种统计图网址
    WEB的相关知识总结
    JS同名方法,
    web components思想如何应用于实际项目
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/3053709.html
Copyright © 2011-2022 走看看