题目链接:HDU - 6606


显然可以二分。然后二分之后,我们就可以dp了,dp[i]=max{dp[j]+1},保证j+1到i的和小于等于mid即可。然后这个显然是区间max,可以用线段树优化,这道题很恶心,卡空间了,所以我们必须离散化。

AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10,M=N*4;
int n,k,a[N],mx[M],dp[N],lc[M],rc[M],rt,cnt,up;
vector<int> v;
#define mid (l+r>>1)
void change(int &p,int l,int r,int x,int v){if(!p)    p=++cnt,mx[p]=-1e18,lc[p]=rc[p]=0;if(l==r){mx[p]=max(mx[p],v);    return ;}if(x<=mid)    change(lc[p],l,mid,x,v);else     change(rc[p],mid+1,r,x,v);mx[p]=max(mx[lc[p]],mx[rc[p]]);
}
int ask(int p,int l,int r,int ql,int qr){if(!p||ql>qr)    return -1e18;if(l==ql&&r==qr)    return mx[p];if(qr<=mid)    return ask(lc[p],l,mid,ql,qr);else if(ql>mid) return ask(rc[p],mid+1,r,ql,qr);else return max(ask(lc[p],l,mid,ql,mid),ask(rc[p],mid+1,r,mid+1,qr));
}
#undef mid
inline int get(int x){return lower_bound(v.begin(),v.end(),x)-v.begin()+1;}
inline int check(int mid){rt=cnt=0; change(rt,1,up,get(0),0);for(int i=1;i<=n;i++){dp[i]=ask(rt,1,up,get(v[a[i]-1]-mid),up)+1;change(rt,1,up,a[i],dp[i]);if(dp[i]>=k)    return 1;}return 0;
}
char *fs,*ft,buf[1<<20];
#define gc() (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<20,stdin),fs==ft))?0:*fs++;
inline int read(){int x=0,f=1; char ch=gc();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=gc();}return x*f;
}
inline void solve(){n=read(),k=read(); mx[0]=-1e18;for(int i=1;i<=n;i++) a[i]=read(),a[i]+=a[i-1],v.push_back(a[i]); v.push_back(0);sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); up=v.size();for(int i=1;i<=n;i++) a[i]=get(a[i]);int l=-2e14,r=2e14;while(l<r){int mid=l+r>>1;if(check(mid))    r=mid;else l=mid+1;}cout<<l<<'\n';
}
signed main(){int T; T=read(); while(T--) solve();return 0;
}

HDU - 6606相关推荐

  1. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  2. hdu 多校赛 第三场

    slove  2/11 rank  288 补题   5/11 --------------------------------------------------- 6604 Blow up the ...

  3. hdu 4389 囧,打表

    http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...

  4. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  5. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  6. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  7. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

  8. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  9. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

最新文章

  1. PLSQL_解析过程及硬解析和软解析的区别(案例)
  2. web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...
  3. 全球及中国增强现实产业战略布局及运营前景决策分析报告2021-2027年
  4. 结对开发石家庄地铁系统
  5. 面向对象基础知识01
  6. 自动配置jdk_JDK 15中自动自动发送更好的NullPointerException消息
  7. MongoDB实战指南(二):索引与查询优化
  8. .NETFramework:Byte
  9. 何把SATA/RAID驱动集成到win xp 安装盘里?
  10. TP-link路由器设置界面展示
  11. Atitit.jquery 版本新特性attilax总结
  12. R语言安装包的几种方法
  13. input输入框自定义历史记录
  14. 经验分享 怎么修改PDF文件中的图片以及文字
  15. 服务器运行速度测试方法,服务器如何测试运行速度
  16. 【基于ARM cortex-A53的音视频】
  17. html显示隐藏图片,简单的图片显示与隐藏
  18. 茁壮浏览器 android,傲游浏览器六一纯真献礼 过个别开生面的儿童节
  19. Powershell操作Excel简析
  20. Java之final修饰变量

热门文章

  1. matplotlib - spines 设置
  2. 【编程100%】22-08 字符串子序列
  3. 本博客通知(亓官劼)
  4. 影视网站导航PHP源码
  5. 蒙特卡洛算法简单理解与demo
  6. 【原创】快速上手使用思维导图
  7. 【无标题】奥的斯故障223 1TH-Fault 2TH Fault故障分析
  8. 【Altium Designer】PCB的泪滴化
  9. 解决Google浏览器首页被2345网站劫持
  10. 最新版!国内IT软件外包公司汇总~