HDU - 6606
题目链接:HDU - 6606
显然可以二分。然后二分之后,我们就可以dp了,dp[i]=max{dp[j]+1},保证j+1到i的和小于等于mid即可。然后这个显然是区间max,可以用线段树优化,这道题很恶心,卡空间了,所以我们必须离散化。
#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相关推荐
- HDU 4389 - X mod f(x)
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...
- hdu 多校赛 第三场
slove 2/11 rank 288 补题 5/11 --------------------------------------------------- 6604 Blow up the ...
- hdu 4389 囧,打表
http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- hdu 1312 Red and Black 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1272 小希的迷宫
Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...
最新文章
- PLSQL_解析过程及硬解析和软解析的区别(案例)
- web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...
- 全球及中国增强现实产业战略布局及运营前景决策分析报告2021-2027年
- 结对开发石家庄地铁系统
- 面向对象基础知识01
- 自动配置jdk_JDK 15中自动自动发送更好的NullPointerException消息
- MongoDB实战指南(二):索引与查询优化
- .NETFramework:Byte
- 何把SATA/RAID驱动集成到win xp 安装盘里?
- TP-link路由器设置界面展示
- Atitit.jquery 版本新特性attilax总结
- R语言安装包的几种方法
- input输入框自定义历史记录
- 经验分享 怎么修改PDF文件中的图片以及文字
- 服务器运行速度测试方法,服务器如何测试运行速度
- 【基于ARM cortex-A53的音视频】
- html显示隐藏图片,简单的图片显示与隐藏
- 茁壮浏览器 android,傲游浏览器六一纯真献礼 过个别开生面的儿童节
- Powershell操作Excel简析
- Java之final修饰变量