[VijosP1639]机密文件 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[VijosP1639]机密文件 题解相关的知识,希望对你有一定的参考价值。

题目大意:

  m个人抄n份资料,资料有编号,每人抄连续的几份资料,每份资料页数不一定相等,每个人抄的速度相同,求使得总时间最少的方案(总时间相同,越前面的人抄的越少)

思路:

  假设每人一天抄一页,二分天数,倒着安排资料即可。

代码:

 1 #include<cstdio>
 2 int n,m,l,r,i,p,a[1001],ans[1001];
 3 
 4 bool check(int x)
 5 {
 6     int i=n,t=0,cnt=0;
 7     for (;i>=0;--i)
 8     {
 9         t=t+a[i];
10         if (t>x)
11         {
12             t=0; ++i;
13             if (++cnt>m) return 0;
14         }
15     }
16     if (t) t=1;
17     return t+cnt<=m;
18 }
19 
20 int main()
21 {
22     scanf("%d%d",&n,&m);
23     for (i=1;i<=n;i++) scanf("%d",&a[i]),r=r+a[i];
24     for (l=0;l<r;)
25     {
26         int mid=l+r>>1;
27         if (check(mid)) r=mid; else l=mid+1;
28     }
29     r=0,p=m;
30     for (i=n;i;--i)
31     {
32         r=r+a[i];
33         if (r>l)
34         {
35             r=0;
36             ans[p--]=++i;
37         }
38     }
39     printf("1 %d\n",ans[p+1]-1);
40     for (i=p+1;i<m;i++) printf("%d %d\n",ans[i],ans[i+1]-1);
41     printf("%d %d",ans[m],n);
42     return 0;
43 }

 

以上是关于[VijosP1639]机密文件 题解的主要内容,如果未能解决你的问题,请参考以下文章

树形dp小胖守皇宫(vijosP1144)

POJ 1639 Picnic Planning:最小度限制生成树

UVa 1639 Candy (数学期望+组合数学+高精度存储)

POJ1639 Picnic Planning 限定度数的最小生成树

vijosP1026毒药?解药?

VijosP1112:小胖的奇偶