BZOJ1283 序列(费用流)】的更多相关文章

题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次选出一个子序列, 要求两次选择的数的下标差至少为$m$. 这个很容易建图就能做.$i$向$\min\{T, i + m\}$连边,容量为1,费用为$a_i$.$i$向$i + 1$连边容量为1,费用为0. Code /** * bzoj * Problem#1283 * Accepted * Tim…
https://darkbzoj.cf/problem/1283 给出一个长度为N的正整数序列Ci,求一个子序列,使得原序列中任意长度为M的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和最大. http://www.cnblogs.com/137shoebills/p/8871648.html ↑和这道题一样 #include<iostream> #include<cstdio> #include<algorithm> #include&l…
[BZOJ1283]序列 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和最大. Input 第1行三个数N,m,k. 接下来N行,每行一个字符串表示Ci. Output 最大和. Sample Input 10 5 3 4 4 4 6 6 6 6 6 4 4 Sample Output 30 HINT 20%的数据:n<=10.100%的数据:N<=1000,k,m&…
不妨看做是先用k个指针指向被选择的前k个元素,然后每次将选中当前第一个元素的指针移到最后,并且需要满足位置变化量>=m.显然这样可以构造出所有的合法方案.那么可以以此建立费用流模型,以一条流量k费用0的链将所有点串起来,再由每个位置向该位置+m连流量1费用为该元素权值的边,最大费用流即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<…
题目描述 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和最大. 输入 第1行三个数N,m,k. 接下来N行,每行一个字符串表示Ci. 输出 最大和. 样例输入 10 5 3 4 4 4 6 6 6 6 6 4 4 样例输出 30 题解 线性规划与费用流 关于线性规划与费用流的具体讲解参见 bzoj1061 . 这道题和那道差不多,都是给出一大堆限制条件,每个变量在限制条件中的出现是连续的. 所以我们…
4842: [Neerc2016]Delight for a Cat_1283: 序列 题目大意:ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜,因此一个小时内他只能选择睡觉或者打隔膜,当然他也必须选择睡觉或打隔膜,对于每一个小时,他选择睡觉或打隔膜的愉悦值是不同的,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时又有一个奥妙重重的规定:对于任意一段连续的k小时,ls必须至少有t1时间在睡觉,t2时间在打隔膜.那么ls想让他获…
题意: 有两个长度为n的序列,要求从每个序列中选k个,并且满足至少有l个位置都被选,问总和最大是多少. \(1\leq l\leq k\leq n\leq 2*10^5\). 首先,记录当前考虑到的位置i,第一个选的数量a, 第二个选的数量b,都被选的数量c,可以做到\(O(n^4)\), 卡常后能过\(n\leq 150\),有40分. 考虑正解:首先,看到这个范围,可以认为正解一定是贪心. 先看下\(n\leq 2000\),这个是网络流的范围.我们可以先建出费用流,然后再变为模拟费用流,即…
LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<ctime> #include<cctype> #include<queue> #include<deq…
正题 题目链接:https://www.luogu.com.cn/problem/P5470 题目大意 两个长度为\(n\)的序列\(a,b\),求出它们两个长度为\(K\)的子序列,且这两个子序列至少有\(L\)个位置下标相等. 求最大化两个子序列的和. \(T\leq 10,1\leq n\leq 2\times 10^5, \sum n\leq 10^6\) 解题思路 先考虑一个简单的费用流做法,我们对于\(a_i\)建在左边,\(b_i\)建在右边. 然后开设一条流量为\(K-L\)的边…
题意 有n个正整数,要选取里面的一些数,在保证每m个连续的数中最多选k个的情况下,使得得到的值最大. 分析 我们可以把问题先转化为选k次,每一次每m个数只能选一个.那么根据贪心的策略,每m个里一定会选一个.那么先建一个源点S,一个汇点T,连边就先用容量为k,费用为0的边把S,数组,T顺次连起来,然后每一个位置i向i+m(如果>n就连向T)连一条容量为1,费用为a[i]的边.做最大费用流即可. CODE #include <queue> #include <cstdio> #i…