集训 sum
来源:互联网 发布:js从入门到精通 编辑:程序博客网 时间:2024/06/04 18:16
Description
N个数排成一个环,请选出不超过K段的连续的数,段与段间不能重叠,且使得选出的数和最大。
Input
输入文件sum.in第一行包含两个正整数N和k。
接下来1行描述这N个数。
Output
输出文件sum.out包含一个数,即要去的最大的和。
Sample Input
9 2
2 -1 2 -1 2 -4 1 -1 2
Sample Output
7
做法:这种查找。。线段树线段树线段树!!!
#include <cstdio>#include <cstring>#include <iostream>#define ll long longusing namespace std;int n,a[2000000];ll t[20000000], ans, ma;int read(){ int res = 0; char ch = getchar(); while (ch < '0' || ch > '9') ch = getchar(); while (ch >= '0' && ch <= '9') res = res * 10 + ch - '0', ch = getchar(); return res; }ll max(ll a, ll b){ return a > b ? a : b;}void build(int p, int l, int r, int x){ if (l == r && l == x) { t[p] = 1; return; } else if (l == r) return; ll m = (l + r) >> 1; if (x <= m) build(p << 1, l, m, x); else build(p << 1 | 1, m + 1, r, x); t[p] = t[p << 1] + t[p << 1 | 1];} ll find(int p, int a, int b, int l, int r){ if (a == l && b == r) return t[p]; else if (l == r) return 0; int m = (l + r) >> 1; if (a > m) return find(p << 1 | 1, a, b, m + 1, r); else if (b <= m) return find(p << 1, a, b, l, m); else return find(p << 1, a, m, l, m) + find(p << 1 | 1, m + 1, b, m + 1, r);}int main(){ n = read(); for (int i = 1; i <= n; i++) { a[i] = read(); ma = max(ma, a[i]); } for (int i = 1; i <= n; i++) { ans += find(1, a[i] / 2 + 1, 10 * n, 1, 10 * n); build(1, 1, 10 * n, a[i]); } printf("%lld",ans);}
阅读全文
0 0
- 集训 sum
- 【清华集训2014】【BZOJ3817】Sum
- 2016ACM暑假集训 - Sacrament of the sum
- 2016ACM暑假集训 - 4 Values whose Sum is 0
- 集训
- 暑假集训第四周阶段二E - Max Sum最大连续子数组和
- AYIT2016省赛集训第五周 K - Minimum Sum LCM(分解质因子)
- [DP][倍增NTT]LOJ#6059. 2017 山东一轮集训 Day1. Sum
- CSU-ACM2017暑假集训2-二分搜索 poj-2785-4 Values whose Sum is 0
- 4 Values whose Sum is 0 --CSU-ACM2017暑假集训2-二分搜索
- [倍增NTT][DP] LOJ#6059. 「2017 山东一轮集训 Day1」Sum
- 跳伞集训
- 集训啦!
- 集训比赛
- 集训终点
- 集训概况
- 集训日记
- 集训结束
- String类的设计笔记----C++学习之路
- 51nod 1824(算法马拉松30)
- 在学习PHP过程中收集的网站
- 从零开始实现朴素贝叶斯分类算法(连续特征情形)
- Python--urllib3库详解1
- 集训 sum
- Spring(一)spring的原理
- 揭秘Java网络爬虫程序原理
- 中国高铁开启铁路新时代
- 有趣的加密算法------每次加密后的数据都不一样
- 扩欧习题
- C#中static void Main(string[ ] args)中的作用及解释
- 2017.10.29
- 旋转字符串