【bzoj1283】【序列】【费用流】
发布日期:2021-11-16 15:38:48
浏览次数:9
分类:技术文章
本文共 953 字,大约阅读时间需要 3 分钟。
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
4 4 4 6 6 6 6 6 4 4
Sample Output
30
HINT
20%的数据:n<=10。
100%的数据:N<=1000,k,m<=100。Ci<=20000。题解:
起点向第一个点连流量为k,费用为0的边.
每一个点向下一个点连流量为k,费用为0的边.
最后一个点向汇点连流量为k,费用为0的边.
每个点x向x+m连流量为1,费用为这个点权值的边.
如果x+m>n就像汇点连.
跑最大费用最大流即可.
代码:
#include#include #include #define N 2000#define M 10000#define inf 2100000000using namespace std;int point[N],cnt(1),next[M<<1],n,m,T,k,x;int dis[N],pre[N],f[N],q[N*50],ans;struct use{ int st,en,v,c;}e[M<<1];void add(int x,int y,int v,int c){ next[++cnt]=point[x];point[x]=cnt; e[cnt].st=x;e[cnt].en=y;e[cnt].v=v;e[cnt].c=c; next[++cnt]=point[y];point[y]=cnt; e[cnt].st=y;e[cnt].en=x;e[cnt].v=0;e[cnt].c=-c;}bool spfa(){ memset(f,0,sizeof(f)); for (int i=1;i<=T;i++) dis[i]=-inf; int h(0),t(1); q[t]=1;dis[1]=0;f[1]=1; while (h
转载地址:https://blog.csdn.net/sunshinezff/article/details/51134448 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月30日 05时24分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么?
2021-06-29
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些?
2021-06-29
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢?
2021-06-29
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字?
2021-06-29
【物联网实训项目】------(二)家庭智慧安防系统之定时监控
2021-06-29
【物联网实训项目】------(三)家庭智慧安防系统之实时监控
2021-06-29
【物联网实训项目】------(四)家庭智慧安防系统之智能温控
2021-06-29
【物联网实训项目】------(五)家庭智慧安防系统之智能监控
2021-06-29
【物联网实训项目】------(六)家庭智慧安防系统之智能监控
2021-06-29
【物联网实训项目】------(七)家庭智慧安防系统之人脸验证
2021-06-29
日常琐事(一)
2021-06-29
数据结构----绪论
2021-06-29
篇章二线性表---常见操作
2021-06-29
回溯法关于图
2021-06-29
04 Python数据类型之元组、集合
2021-06-29
05 Python之条件与循环
2021-06-29
06 Python之函数调用与定义
2021-06-29
07 Python之Numpy库
2021-06-29