社区讨论
错误编号215
P1182数列分段 Section II参与者 5已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mi4g61lk
- 此快照首次捕获于
- 2025/11/18 18:45 4 个月前
- 此快照最后确认于
- 2025/11/18 18:51 4 个月前
(这题二分。)
题目说了a[i]之后不会爆longint,我不知道哪里还会出现算术上溢错误。
CPPvar
n,m,i,sum,mid,l,r:longint;
a:array[0..max_n+1] of longint;
function ok(x:longint):boolean;
var
i,j,sum:longint;
begin
j:=1;
for i:=1 to m do
if j<=n then
begin
sum:=0;
while (j<=n)and(sum+a[j]<=x) do
begin
inc(sum,a[j]); inc(j);
end;
end
else exit(true);
if j=n+1 then exit(true);
exit(false);
end;
begin
readln(n,m);
for i:=1 to n do
begin
read(a[i]);
inc(r,a[i]);
if a[i]>l then l:=a[i];
end;
dec(r,m-1);
while l<r do
begin
mid:=(l+r) div 2;
if ok(mid) then r:=mid
else l:=mid+1;
end;
writeln(l);
end.
回复
共 11 条回复,欢迎继续交流。
正在加载回复...