【BZOJ 2288】 生日礼物】的更多相关文章

2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 856  Solved: 260[Submit][Status][Discuss] Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知道选择元素之和的最大值.你能帮助她吗?   Inp…
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 382  Solved: 111[Submit][Status][Discuss] Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知道选择元素之和的最大值.你能帮助她吗?   Inp…
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1003  Solved: 317[Submit][Status][Discuss] Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知道选择元素之和的最大值.你能帮助她吗? Inpu…
2288: [POJ Challenge]生日礼物 Description ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知道选择元素之和的最大值.你能帮助她吗? Input 第1行,两个整数 N (1 ≤ N ≤ 105) 和 M (0 ≤ M ≤ 105), 序列的长度和可以选择的部分. 第2行, N 个整数 A1, A2, ..., AN (0…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2288 [题目大意] 给出一列数,求最多取m段连续的数字,使得总和最大 [题解] 首先我们对数据进行合并处理,连续的一段正数或者连续的一段负数处理成一个数字, 之后我们发现,如果正数的个数小于等于m,那么直接输出正数的总和即可, 如果大于m,我们有些正数不选,或者选择一些负数把左右两端的正数并起来. 这个负数的选择过程相当于减去这个数的绝对值, 正数选择拿出去的过程也相当于减去这个数的…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2288 [算法] 先将这个序列的正负数合并起来,变成一个正负交替的序列 如果新序列的正数个数小于等于M,那么直接输出正数的和即可 否则,我们可以将某些正数和负数合并起来,或者不要某些正数 将所有数按绝对值排序,放入堆中,问题就转化为了 : 在这些数中选出(Cnt - M)个数(其中Cnt为正数的个数), 选了一个数后相邻的两个数就不能选,使得最后的和尽可能小 这个问题可以用CTSC2…
就是堆+链表,十分像 数据备份 对吧? 把相邻的正数和相邻的负数合并成一整个正数块和负数块,最后只剩一些交替相间的正块与负块了吧? 显然,正块的个数<=m时,全部选走就获得了最大权值,否则我们可能需要选一些负块来获得最优解. 然而弱不经风的我调了四个小时链表和预处理QAQ... 千万不要犯此种错误: n=g(),m=g(); ;i<=n;++i) a[i]=g(); vl[cnt]=a[],pre[]=; ;i<=n;++i) ])&&sgn(a[i])) vl[cnt]…
参考:http://blog.csdn.net/w_yqts/article/details/76037315 把相同符号的连续数字加起来,合并后ans先贪心的加上所有正数,如果正数个数sum>m,设计二元组(i,a[i])表示合并后序列i位置上值为a,记录前驱后继,塞进按绝对值排序的小根堆里.每次拿出来一个,减去这个x的a的绝对值,然后合并左右前驱后继,再塞回去. 如果拿出来的是正数,那么减去相当于原来选了现在不选,如果是负数,减去相当于选. 然后a值要改成a[l]+a[r]+a[x],下次再…
好像是模拟费用流 Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define P pair<int,int> #define ll long long #define maxn 100007 using namespace std; int arr[maxn],l[maxn],r[maxn],mark[maxn]; priority_que…
Link: BZOJ 1293 传送门 Solution: 这题直接上尺取法就行了吧 先将每种颜色第一个放入优先队列,用$mx$维护当前的末尾位置 每次取出第一个颜色,更新答案.将其下一个放入队列中去,更新$mx$ Tip:此题BZOJ无故TLE,本机和Luogu都能AC Code: #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,int> P; ]; ll mx…