Byedance AI Camp-笔试题目
2024-10-16 16:44:28
最小m段和问题:给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?
Input
第一行输入一个整数t,代表有t组测试数据。
每组数据第一行为两个整数n,m分别代表序列的长度和最多可分的段数。
接下来一行包含n个整数表示序列。
0<=n<=50000 1<=m<=n,0<=ai<=2^30。
Output
输出一个整数表示和最大的一段的最小值。
#if 0 //内存爆,30% #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std; typedef long long ll;
ll a[], f[][]; int main()
{
int n, m, i, j, k;
ll maxt, tmp;
while(scanf("%d%d",&n,&m)==)
{
memset(f,,sizeof(f));
for(i=;i<=n;i++)
{
scanf("%d",&a[i]);
f[i][] = f[i - ][] + a[i];
} for (i = ; i <= m; i++)
{
for (j = i; j <= n; j++)
{
tmp = 2147483647L ; //tmp = LONG_MAX;
for (k = i; k<j; k++)
{
maxt = max(f[k][i - ], f[j][] - f[k][]);
if (tmp>maxt)
tmp = maxt;
}
f[j][i] = tmp;
}
}
printf("%d\n", f[n][m]);
}
return ;
}
#endif #if 0 //AC #include <cstdio>
#include <algorithm>
using namespace std; #define MAX(a,b) a>b?a:b typedef long long ll; int n, m;
ll a[];
ll sum;
ll maxx; bool judge(ll x)
{
ll duan = ;//表示分的段数
ll he = ;
for (int i = ; i<n; i++)
{
if (he + a[i]>x)//当当前段再加一段长度后超过了x的值,那么新开一段
{
duan++;
he = a[i];
if (duan >= m)//当还没有扫完这个序列但是已有的段数已经超过了所规定的段数
{
return false;
}
}
else
{
he = he + a[i];//延长该段
}
}
return true;
} int main()
{
while (scanf("%d%d", &n, &m) == )
{
sum = ;
maxx = -;
for (int i = ; i < n; i++)
{
scanf("%lld", &a[i]);
sum = sum + a[i];
maxx = MAX(maxx, a[i]);
}
ll l = maxx, r = sum;//左区间用maxx是因为所分的段里面如果不含该序列的最大值,那么这个段子的和一定大于最大值,右区间为sum是因为不分的时候段子和为sum
ll mid, ans;
while (l <= r)
{
mid = (l + r) / ;
if (judge(mid))//看是否能将序列分成符合段数不大于m 且最大和接近mid的段子们
{
ans = mid;
r = mid - ;//求的最小值
}
else
{
l = mid + ;
}
}
printf("%lld\n", ans);
}
return ;
} #endif
「问题描述」类似的题目:
给定一个n*m的矩阵,矩阵中的每个元素aij为正整数。
接下来规定
1.合法的路径初始从矩阵左上角出发,每次只能向右或向下走,终点为右下角。
2.路径经过的n+m-1个格子中的元素为A1,A2…A(n+m-1),Aavg为Ai的平均数,路径的V值为(n+m-1)*∑(Ai-Aavg) ^2
(1<=i<=n+m-1)
求V值最小的合法路径,输出V值即可,有多组测试数据。
最新文章
- EasyPR--开发详解(7)字符分割
- java 链表数据结构
- 【转载】Linux常用命令列表
- ecshop去掉“云服务中心”或者是“模板堂知识库”
- mysql高级排序&;高级匹配查询示例
- SerializationUtility
- HDU 4865 Peter&#39;s Hobby --概率DP
- CodeForces 164C Machine Programming 费用流
- hdu 4277 USACO ORZ
- PYTHON小CASE
- python (5分钟实现一个游戏的屏蔽敏感字系统,)
- 记一次python的一些参数
- Python2.x的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- (void) (&;_min1 == &;_min2);【转】
- netty源码解解析(4.0)-5 线程模型-EventExecutorGroup框架
- Oracle Comment 获取并修改表或字段注释
- 【代码笔记】iOS-NSFileManager
- Android开发——Android M(6.0) 权限解决方案
- PyCharm 注释
- 客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?” 又一鞭。客户崩溃:“你们TMD到底要啥?” “要什么?...