csuoj1023修路( )

2024-05-02 23:58
文章标签 修路 csuoj1023

本文主要是介绍csuoj1023修路( ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

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

Input

第一行是测试样例的个数T ,接下来是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<iostream>
#include<algorithm>
using namespace std;
int road[305];
int main()
{int T,N,M,sum,big;cin>>T;while(T--){cin>>N>>M;sum=0;              big=0;              for(int i=0;i<N;i++){cin>>road[i];sum+=road[i];          //求出路段长度之和
big=max(big,road[i]);  //求出最长的路段长度
}int low=big,high=sum,mid;  //二分的区间及为sum和big之间
                                                                      //因为1支队伍修完全程需sum,  m支队伍修完全程需big.所以n支队伍修完全程所需的时间在其中二分
        while(high>low){mid=(low+high)/2;sum=0;int cnt=0;for(int i=0;i<N;i++){sum+=road[i];if(sum>mid){sum=road[i];cnt++;     //求出在该时间(距离)条件下最少需要的队伍数量}}if(cnt<M)          //数量不足M说明修的时间过长,不合适,缩小上边界high=mid;elselow=mid+1;}cout<<low<<endl;       //此时low=high}return 0;
}





这篇关于csuoj1023修路( )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955416

相关文章

要想富,先修路

★实验任务 福建省调查城镇交通状况, 得到现有城镇道路统计表, 表中列出了每条道路直接连通的 城镇。 省政府“畅通工程” 的目标是使全省任何两个城镇间都可以实现交通(但不一定有直 接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? ★数据输入 每个测试用例的第 1 行给出两个正整数,分别是城镇数目 N ( < 1000 ) 和道路数目 M; 随后的 M 行对应 M 条道路,

机试:砍树修路

问题描述 代码示例: //一坐标轴表示某道路,从0开始 到L,整数位置上都种有一颗树。现在该路修建地铁,要砍掉铁路线路上的树木。例如:L等于10,铺设4条铁路,坐标是1到2,2到3,2到8,3到5,那么1到8的树都要被砍掉,剩下0,9,10三棵。程序要求,输入L,输入铁路铺设条数m,然后输入m组铁路的坐标。求剩下多少棵树。#include <bits/stdc++.h>using name

#动态规划#poj 3666 洛谷 2893 修路 Making the Grade

题目 给出一个长度是 n n n的序列 A A A,构造出一个长度为 n n n的单调不递减序列 B B B,使 ∑ i = 1 n a b s ( A [ i ] − B [ i ] ) \sum_{i=1}^nabs(A[i]-B[i]) ∑i=1n​abs(A[i]−B[i])最小 分析 设 f [ i ] [ j ] f[i][j] f[i][j]表示完成前 i i i个数的构造

先搞电脑,致富先修路

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入

2023NOIP A层联测14 修路

题目大意 有一个有 n n n个点 m m m条边的无向连通图,第 i i i条边连接点 u i u_i ui​和 v i v_i vi​,长度为 l i l_i li​。 你想要求这个图的一棵生成树,并规定一个中心点 m i d mid mid。定义一种规划的拥挤指数为 k × S + ∑ i = 1 n d i s ( i , m i d ) k\times S+\sum\limits_{