当前位置: 首页 > news >正文

BZOJ 1283 序列 费用流 网络流 线性规划

https://darkbzoj.cf/problem/1283

给出一个长度为N的正整数序列Ci,求一个子序列,使得原序列中任意长度为M的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和最大。

http://www.cnblogs.com/137shoebills/p/8871648.html

↑和这道题一样

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 using namespace std;
 8 const int maxn=1100;
 9 int n,m,k,S,T,SS;
10 struct nod{
11     int x,y,v,co,rev,next;
12 }e[10*maxn];
13 int head[maxn]={},tot=0;
14 int a[maxn]={};
15 void init(int x,int y,int v,int co){
16     e[++tot].x=x;e[tot].y=y;e[tot].v=v;e[tot].co=co;e[tot].rev=tot+1;e[tot].next=head[x];head[x]=tot;
17     e[++tot].x=y;e[tot].y=x;e[tot].v=0;e[tot].co=-co;e[tot].rev=tot-1;e[tot].next=head[y];head[y]=tot;
18 }
19 queue<int>q;
20 int vis[maxn]={},fa[maxn]={},dis[maxn]={};
21 bool SPFA(){
22     memset(dis,31,sizeof(dis));
23     memset(vis,0,sizeof(vis));
24     memset(fa,0,sizeof(fa));
25     q.push(S);vis[S]=1;dis[S]=0;
26     while(!q.empty()){
27         int x=q.front();q.pop();vis[x]=0;
28         for(int i=head[x];i;i=e[i].next){
29             if(!e[i].v)continue;
30             if(dis[e[i].y]>dis[x]+e[i].co){
31                 dis[e[i].y]=dis[x]+e[i].co;
32                 fa[e[i].y]=i;
33                 if(!vis[e[i].y]){
34                     q.push(e[i].y);vis[e[i].y]=1;
35                 }
36             }
37         }
38     }
39     return fa[T];
40 }
41 int doit(){
42     int val=maxn,ans=0;
43     for(int i=fa[T];i;i=fa[e[i].x])val=min(val,e[i].v);
44     for(int i=fa[T];i;i=fa[e[i].x]){
45         e[i].v-=val;e[e[i].rev].v+=val;ans+=e[i].co;
46     }
47     return ans;
48 }
49 int main(){
50     scanf("%d%d%d",&n,&m,&k);
51     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
52     T=n+1;S=T+1;SS=S+1;
53     for(int i=1;i<=n;i++){
54         init(i,i+m>n?T:i+m,1,-a[i]);
55         init(i,i+1>n?T:i+1,k,0);
56     }
57     for(int i=1;i<=m;i++)init(SS,i,maxn,0);
58     init(S,SS,k,0);
59     int ans=0;
60     while(SPFA())ans-=doit();
61     printf("%d\n",ans);
62     return 0;
63 }
View Code

 

转载于:https://www.cnblogs.com/137shoebills/p/8877962.html

相关文章:

  • kafka知识体系-kafka leader选举
  • 数据概述
  • winform控件大全
  • C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形
  • 设计模式体会
  • 函数参数选项的处理getopt getopt_long getopt_long_only
  • eclipse 配置多个tomcat
  • io流2
  • 图文剖析自己定义View的绘制(以自己定义滑动button为例)
  • 项目策划的原则
  • zabbix使用web界面设置邮件报警
  • 大牛地址
  • 查询MySQL某字段相同值得重复数据
  • js 数字转换成带逗号的显示方式
  • Apache 修改登录账户
  • 【刷算法】求1+2+3+...+n
  • canvas 高仿 Apple Watch 表盘
  • CSS 提示工具(Tooltip)
  • JS学习笔记——闭包
  • leetcode388. Longest Absolute File Path
  • PhantomJS 安装
  • QQ浏览器x5内核的兼容性问题
  • vue数据传递--我有特殊的实现技巧
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从零开始学习部署
  • 二维平面内的碰撞检测【一】
  • 分布式熔断降级平台aegis
  • 实战|智能家居行业移动应用性能分析
  • 使用API自动生成工具优化前端工作流
  • 智能合约Solidity教程-事件和日志(一)
  • 最近的计划
  • Prometheus VS InfluxDB
  • 正则表达式-基础知识Review
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #{}和${}的区别是什么 -- java面试
  • (LeetCode C++)盛最多水的容器
  • (安卓)跳转应用市场APP详情页的方式
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四) Graphivz 颜色选择
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Oracle存储过程编写经验和优化措施
  • .htaccess 强制https 单独排除某个目录
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net 简单实现MD5
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET开源项目介绍及资源推荐:数据持久层
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @Conditional注解详解
  • @Documented注解的作用
  • @EnableWebMvc介绍和使用详细demo