【HDOJ】【3415】Max Sum of Max-K-sub-sequence
DP/单调队列优化
呃……环形链求最大k子段和。
首先拆环为链求前缀和……
然后单调队列吧<_<,裸题没啥好说的……
WA:为毛手写队列就会挂,必须用STL的deque?(写挂自己弱……sigh)
1 //HDOJ 3415 2 #include<queue> 3 #include<cmath> 4 #include<vector> 5 #include<cstdio> 6 #include<cstring> 7 #include<cstdlib> 8 #include<iostream> 9 #include<algorithm> 10 #define rep(i,n) for(int i=0;i<n;++i) 11 #define F(i,j,n) for(int i=j;i<=n;++i) 12 #define D(i,j,n) for(int i=j;i>=n;--i) 13 #define pb push_back 14 #define CC(a,b) memset(a,b,sizeof(a)) 15 using namespace std; 16 int getint(){ 17 int v=0,sign=1; char ch=getchar(); 18 while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();} 19 while(isdigit(ch)) {v=v*10+ch-'0'; ch=getchar();} 20 return v*sign; 21 } 22 typedef long long LL; 23 const int N=100010,INF=~0u>>2; 24 const double eps=1e-8; 25 /*******************template********************/ 26 27 int a[N],f[N],q[N+N],s[N]; 28 deque<int>Q; 29 void work(){ 30 int n=getint(),k=getint(); 31 s[0]=0; 32 F(i,1,n){ 33 a[i]=getint(); 34 s[i]=s[i-1]+a[i]; 35 } 36 F(i,n+1,n+k-1) s[i]=s[i-1]+a[i-n]; 37 int m=n+k-1; 38 39 int _sum=-INF,pos=0,end=0; 40 Q.clear(); 41 F(i,1,m){ 42 while(!Q.empty() && s[Q.back()]>s[i-1]) Q.pop_back(); 43 while(!Q.empty() && Q.front()<(i-k)) Q.pop_front(); 44 Q.push_back(i-1); 45 if (s[i]-s[Q.front()]>_sum){ 46 _sum=s[i]-s[Q.front()]; 47 pos=Q.front()+1; 48 end=i; 49 } 50 } 51 printf("%d %d %d\n",_sum,pos,(end>n) ? (end-n) : end); 52 } 53 int main(){ 54 int T=getint(); 55 while(T--) work(); 56 return 0; 57 }
View Code
转载于:https://www.cnblogs.com/Tunix/p/4320006.html
【HDOJ】【3415】Max Sum of Max-K-sub-sequence相关推荐
- 【LINQ】Linq to SQL -- Count/Sum/Min/Max/Avg 操作符
适用场景 统计数据,比如统计一些数据的个数,求和.最小值.最大值.平均数 Count 说明:返回集合中的元素个数,返回Int类型:不延迟.生成SQL语句为:SELECT COUNT(*) FROM 1 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 【HDOJ 2020.09.29】一些语法水题ByVJ
By VJ 小抄c版v2 A //上次不是做过了 #include<stdio.h> int main(){char a, b, c, t;while(scanf("%c%c%c ...
- 51Nod-1051 最大子矩阵和【最大子段和+DP】
1051 最大子矩阵和 基准时间限制:2秒 空间限制:131072KB 分值:40难度:4级算法题 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如 ...
- 第一届河北工业大学程序设计竞赛校赛 【个别题的解析】
水平有限,把会做的题做了一些总结. 目录 A: WELCOME! B: POOLING C: 标枪游戏 E: 简单数论 F: 回文串 J: 有点复杂的gcd问题 A: WELCOME! 题目地址 #i ...
- 【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列
文章目录 T1:单峰排列 题目 题解 code T2:历史研究 题目 题解 code T3:大魔法师 题目 题解 code 我可能这辈子都更不出来狂欢赛5了,先咕咕 T1:单峰排列 题目 一个n的全排 ...
- LeetCode算法题个人笔记【数组】【简单1-5】【c++】
资料来源于leetcode官网 记得多看评论! 听从大佬建议从同一类型题目开始做,首先决定做数组! 前面还有三道简单题已经做过了.共47道简单题 ** 第一题:搜索插入位置 ** 给定一个排序数组和一 ...
- HDU-1003 Max Sum(动态规划)
题目回顾(HDU-1003): Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is t ...
- 【HDOJ】1003 Max Sum_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...
- Pandas-数据操作-数值型(一):统计函数【describe、count、sum、mean、median、max、std、skew(偏度)、kurt(峰度)】【参数:axis、skipna】
综合分析: 能够直接得出很多统计结果,count, mean, std, min, max 等 # 计算平均值.标准差.最大值.最小值 data.describe() 一.统计函数 统计函数 描述 c ...
最新文章
- 增加一个dbe连接_pogo pin连接器是如何解决振动的问题?
- 【记录】batch_size对cnn训练的影响
- 《Effective C#》Item 15:利用using和try-finally来释放资源
- Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)
- python3.6字典有序_一日一技:Python 3.6以后,字典有序
- 【Boost】boost库asio详解1——io_service::run函数无任务时退出的问题
- python需要配置环境变量吗_python需要设置哪些环境变量?我只知道一个PYTHONHOME指向安装目录。(python详细安装教程 path)...
- python注册系统_Python制作简易注册登录系统
- 文字超过省略_纯CSS实现“文本溢出截断省略”的几种方法
- 两路语音 两路计算机数据综合,两路语音PCM时分复用系统的设计.DOC
- 【极限精简887M,老机专用】星岚技术 Win7 x64 极限精简版 V2021.4
- 安卓pdf阅读器_详细解读:除了Kindle,还有哪些电子阅读器可以满足书迷的需求?...
- SRS 流媒体服务器对http-flv流进行配置
- 基于ASP.NET的图书在线销售管理系统设计与实现
- python中的乘方_python中的乘方
- 导出excel.支持在线打开保存
- 小功能⭐️U3D异步加载功能
- python3.x程序设计基础周元哲答案_周元哲
- [渗透教程]-001-信息收集-第三方软件
- 群晖NAS 7.X搭建本地web服务器并实现公网访问 1/3