bzoj1044 [HAOI2008]木棍分割——前缀和优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1044
咳咳...终于A了...
居然没注意到正着找pos是n方会TLE...所以要倒着找pos;
二分还写错了,改了半天...
小心前缀和取模后相减变成负数!!!!!!!!!
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=,mod=;
int n,m,a[maxn],s[maxn][],f[maxn][],ans,mn,sum,l,r,pos[maxn];
bool pd(int x)
{
int s=,cnt=;
for(int i=;i<=n;i++)
{
if(s+a[i]>x)
{
cnt++;
s=;
}
s+=a[i];
}
return cnt<=m;//m!!
return ;
}
void solve1()
{
r=s[n][];
int mid=(l+r)>>;
while (l<=r)
{
if (pd(mid)) mn=mid,r=mid-;
else l=mid+;
mid=(l+r)>>;
}
}
void solve2()
{
for(int i=;i<=n;i++)
{
if(s[i][]<=mn)f[i][]=;
else break;
}
for (int i=;i<=n;i++)
{
if (s[i][]<=mn) continue;
for (int j=i-;j>=;j--)
if (s[i][]-s[j][]>mn) {pos[i]=j+;break;}
// for(int j=0;j<i;j++)
// if(s[i][0]-s[j][0]<=mn){pos[i]=j;break;}//TLE!!!(n方)
}
bool x=;
while(m--)
{
for(int i=;i<=n;i++)
s[i][x]=(s[i-][x]+f[i][x])%mod;//
x=!x;
for(int i=;i<=n;i++)
f[i][x]=(s[i-][!x]-s[max(pos[i]-,)][!x]+mod)%mod;//i-1! //pos[i]-1! //mod后小心负数!!!!!
(ans+=f[n][x])%=mod;
}
printf("%d %d",mn,ans);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&a[i]),s[i][]=s[i-][]+a[i],l=max(l,a[i]);
solve1();
solve2();
return ;
}
bzoj1044 [HAOI2008]木棍分割——前缀和优化DP的更多相关文章
- bzoj1044[HAOI2008]木棍分割 单调队列优化dp
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4314 Solved: 1664[Submit][Stat ...
- bzoj 1044 [HAOI2008]木棍分割——前缀和优化dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1044 前缀和优化. 但开成long long会T.(仔细一看不用开long long) #i ...
- BZOJ_1044_[HAOI2008]木棍分割_二分答案+DP+单调队列
BZOJ_1044_[HAOI2008]木棍分割_二分答案+DP Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个 ...
- [BZOJ1044][HAOI2008]木棍分割 二分+贪心+dp+前缀和优化
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4112 Solved: 1577 [Submit][St ...
- BZOJ1044 [HAOI2008]木棍分割 【二分+Dp】
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4281 Solved: 1644 [Submit][St ...
- BZOJ1044: [HAOI2008]木棍分割
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1580 Solved: 567[Submit][Statu ...
- 【czy系列赛】czy的后宫6 && bzoj1044 [HAOI2008]木棍分割
题目描述 众所周知的是丧尸czy有很多妹子(虽然很多但是质量不容乐观QAQ),今天czy把n个妹子排成一行来检阅.但是czy的妹子的质量实在--所以czy看不下去了.检阅了第i个妹子会增加czy a[ ...
- 【动态规划】bzoj1044: [HAOI2008]木棍分割
需要滚动优化或者short int卡空间 Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍 ...
- [bzoj1044][HAOI2008][木棍分割] (二分+贪心+dp+队列优化)
Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长 ...
随机推荐
- bzoj 3207 花神的嘲讽计划Ⅰ 主席树+hash
花神的嘲讽计划Ⅰ Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3112 Solved: 1086[Submit][Status][Discuss] ...
- Python数据分析常用的库总结
Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...
- P2863 [USACO06JAN]牛的舞会The Cow Prom
洛谷——P2863 [USACO06JAN]牛的舞会The Cow Prom 题目描述 The N (2 <= N <= 10,000) cows are so excited: it's ...
- sqlite中常见的问题总结
一.sqlite中不能使用日期进行相减,执行结果无效 例如:SELECT count(*) as cnt FROM DayBanalces WHERE (date(ofDay)- date('2013 ...
- Meteor计时器
Meteor有提供它自己的setTimeout和setInterval方法.这些方法被用于确保所有全局变量都具有正确的值.它们就像普通 JavaScript 中的setTimeout 和 setInt ...
- Ubuntu更换主板之后 网络重新配置
Ubuntu更换主板之后,网络不能用,需要重新配置 1. 首要要查看新主板的mac地址, dmesg | grep eth 2. 修改网络信息,该配置文件是/etc/udev/rules.d, 文 ...
- OpenWRT解决因PPPOE丢包导致频繁掉线问题
其关键在于这两个参数 lcp-echo-interval 1 #发送间隔秒 lcp-echo-failure 5 #5次未响应断开 因为OpenWRT默认的设置为1秒发送一次 5次没有响应就 ...
- kd树 hdu2966 In case of failure
传送门:pid=2966" target="_blank">点击打开链接 题意:给n个点,求对于每一个点到近期点的欧几里德距离的平方. 思路:看鸟神博客学kd树劲啊 ...
- [RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through
switchMap is mergeMap that checks for an "inner" subscription. If the "inner" su ...
- CSDN管理员看过来
CSDN管理员看过来 你好.CSDN管理员,我想我被特殊对待了.我看了一些人的博客.终于发现仅仅有我博客的数据有异常.这算是给我的惊喜吗? 言归正传,我发现我博客上两个地方出现的文章的总数对不上.原创 ...