F - 修路 CSU - 1023 (二分)

原创 2018年04月15日 15:02:27

前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路。假设有A城市通往B山区的路由m条连续的路段组成,现在将这m条路段承包给n个工程队(≤ ≤ 300)。为了修路的便利,每个工程队只能分配到连续的若干条路段(当然也可能只分配到一条路段或未分配到路段)。假设每个工程队修路的效率一样,即每修长度为1的路段所需的时间为1。现在给出路段的数量m,工程队的数量n,以及m条路段的长度(这m条路段的长度是按照从A城市往B山区的方向依次给出,每条路段的长度均小于1000),需要你计算出修完整条路所需的最短的时间(即耗时最长的工程队所用的时间)。

Input

第一行是测试样例的个数,接下来是T个测试样例,每个测试样例占2行,第一行是路段的数量m和工程队的数量n,第二行是m条路段的长度。

Output

对于每个测试样例,输出修完整条路所需的最短的时间。

Sample Input
2
4 3
100 200 300 400
9 4
250 100 150 400 550 200 50 700 300
Sample Output
400
900

        简单的二分+模拟,注意读题(千万别读错)

        AC:代码

        

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a[303];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n,m,low = 0,high = 0,mid;
		cin>>n>>m;
		for(int i = 0;i<n;i++){
			scanf("%d",&a[i]);
			if(a[i]>low) low = a[i];
			high = high + a[i];
		}
		while(high>low){
			mid = (low + high)/2;
			int tt = a[0];
			int ans = 1;
			for(int i = 1;i<n;i++){
				if(tt+a[i]>mid){
					ans++;tt = a[i];
				}
				else{
					tt += a[i];
				}
			}
			if(ans>m){
				low = mid + 1;
			}
			else{
				high = mid;
			}
		}printf("%d\n",low);
	}
	return 0;
}

    
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Acer12138/article/details/79949404

CSU_1023_修路

1023: 修路 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 271  Solved: 139 [Submit][Status][Web ...
  • baidu_29410909
  • baidu_29410909
  • 2015-09-02 20:51:05
  • 780

hrbust 1039 修路【二分+模拟】

修路 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 414(207 users)...
  • mengxiang000000
  • mengxiang000000
  • 2016-07-07 14:13:17
  • 668

Hust oj 1039 修路(二分)

修路 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 406(204 users)...
  • Sara_YF
  • Sara_YF
  • 2016-05-23 13:53:19
  • 825

CSU - 1956 数字和 二分+思维

题目链接 题意: 让你选取三个位置,使得数列分成四部分,每部分的和都相等,问你能否成功.(ai>=0&&ai 思路: 这个题的话,由于前缀和都是递增的,所以的话我们可以开一个双...
  • HowardEmily
  • HowardEmily
  • 2017-06-14 13:44:09
  • 204

csuoj1023修路( )

Description 前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路。假设有A城市通往B山区的路由m条连续的路段组成,现在将这m条路段承包给n个工程队(n ...
  • T__TSZ
  • T__TSZ
  • 2017-07-25 21:15:22
  • 130

CSU 1335 高桥和低桥(树状数组)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1335 这道题,就是树状数组+二分搜索+离散化处理,首先把桥进行排序,然后按照排序桥的顺...
  • weishengmingerfendou
  • weishengmingerfendou
  • 2015-03-10 17:26:32
  • 274

修路问题

题目: 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有...
  • cq340321
  • cq340321
  • 2017-03-29 10:59:31
  • 438

CSU 1023: 修路 1024: Mining 1025: Chocolate Auction

1023: 修路代码:#include &amp;lt;iostream&amp;gt; #include &amp;lt;stdio.h&amp;gt; using namespace st...
  • nameofcsdn
  • nameofcsdn
  • 2018-04-14 17:08:32
  • 13

BZOJ 4774 修路

斯坦纳树DP斯坦纳树经典DP方程:f[s][i]f[s][i] 表示当前需连通点的连通情况至少为ss,且路径上一定经过点ii的代价。为什么说是至少为ss,因为可能方案里的路径经过了别的点,然而在当前状...
  • ziqian2000
  • ziqian2000
  • 2017-04-27 23:28:00
  • 256

[BZOJ4774]修路

斯坦纳树入门题
  • QAQ__QAQ
  • QAQ__QAQ
  • 2017-03-22 10:38:01
  • 486
收藏助手
不良信息举报
您举报文章:F - 修路 CSU - 1023 (二分)
举报原因:
原因补充:

(最多只允许输入30个字)