当前位置: 首页 > 编程日记 > 正文

[网络流24题] 最长k可重区间集

对于区间 u->v ,连接边 u->v,权值为-len,容量为1,之后对每个点 i->i+1,连边 i->i+1,容量为k,权值为0,求区间最左端点到最右端点的费用流,费用相反数即为答案。

// q.c#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int M=500+5,INF=(int)1e8;
struct Edge {int u,v,nex,cost,flow,cap; Edge() {}Edge(int a,int b,int c,int d,int e,int f):u(a),v(b),nex(c),cost(d),flow(e),cap(f) {}
}ed[M<<3];
int cnt,head[M<<1];
void add_edge(int a,int b,int c,int d) {ed[cnt]=Edge(a,b,head[a], c,0,d); head[a]=cnt++;ed[cnt]=Edge(b,a,head[b],-c,0,0); head[b]=cnt++;
}
struct Dinic {int n,s,t,dis[M<<1],pre[M<<1],lim[M<<1]; bool in[M<<1]; queue<int> Q;Dinic():n(0),s(0),t(0) {mem(dis); mem(pre); mem(lim); mem(in);while(!Q.empty()) Q.pop();}bool spfa(int &Flow,int &Cost) {for(int i=0;i<=n;i++) dis[i]=lim[i]=INF,pre[i]=in[i]=0;dis[s]=0; in[s]=true; Q.push(s);int u,i; Edge e;while(!Q.empty()) {u=Q.front(); Q.pop(); in[u]=false;for(i=head[u];i!=-1;i=ed[i].nex) {e=ed[i];if(dis[u]+e.cost<dis[e.v]&&e.cap>e.flow) {dis[e.v]=dis[u]+e.cost; pre[e.v]=i;lim[e.v]=min(lim[u],e.cap-e.flow);if(!in[e.v]) in[e.v]=true,Q.push(e.v);}}}if(dis[t]==INF) return false;Flow+=lim[t];Cost+=lim[t]*dis[t];u=t;while(u!=s) {i=pre[u]; ed[i].flow+=lim[t];ed[i^1].flow-=lim[t]; u=ed[i].u;}return true;}int solve(int x,int y,int z) {s=x; t=y; n=z;int Flow=0,Cost=0;for(;spfa(Flow,Cost););return Cost;}
}DC;
struct Data {int x,y,z;bool operator < (const Data &A) const {if(x!=A.x) return x<A.x;return y<A.y;}
}da[M],tmp[M<<1];
int ref[M<<1];
int main() {freopen("interv.in","r",stdin);freopen("interv.out","w",stdout);memset(head,-1,sizeof(head));int n,k,m=0,a,b,p,q,tot=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) {scanf("%d%d",&a,&b);if(a>=b) continue;++m;q=m<<1; p=q-1;da[m].x=p,da[m].y=q;da[m].z=b-a;tmp[p].x=a,tmp[p].y=p;tmp[q].x=b,tmp[q].y=q;}sort(tmp+1,tmp+(m<<1)+1);for(int i=1;i<=(m<<1);i++) {if(tmp[i].x!=tmp[i-1].x) ref[tmp[i].y]=++tot;else ref[tmp[i].y]=tot;}for(int i=1;i<=m;i++) {da[i].x=ref[da[i].x];da[i].y=ref[da[i].y];add_edge(da[i].x,da[i].y,-(da[i].z),1);}for(int i=1;i<tot;i++) {add_edge(i,i+1,0,INF);}add_edge(0,1,0,k);add_edge(tot,tot+1,0,k);printf("%d\n",-DC.solve(0,tot+1,tot+1));return 0;
}

转载于:https://www.cnblogs.com/qjs12/p/8902727.html

相关文章:

Gym - 102082G

Gym - 102082Ghttps://vjudge.net/problem/2198225/origin对于数列中任意一个数&#xff0c;要么从最左边到它不递减&#xff0c;要么从最右边到到它不递减&#xff0c;为了满足这个条件&#xff0c;就要移动&#xff0c;而移动的最少步数就是逆序对数。所以这个数要么往左移动…

JAVA环境变量配置与配置后CMD的使用

JAVA环境变量配置&#xff1a; 直接在环境变量Path(或PATH&#xff0c;大小写无所谓)里加上 &#xff1a;JDK安装路径名/bin 也可以先设JAVA_HOME然后再设JAVA_HOME/bin&#xff0c;但必须是在同一区域中进行设置&#xff0c;系统变量区域或用户变量区域&#xff0c;否则设置的…

【web】从数据库读取多条数据到前台

servlet 代码实现 &#xff1a; package com.zzxtit.order;import java.io.IOException; import java.sql.SQLException; import java.util.List;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet…

FUSE——用户空间文件系统

用户空间文件系统&#xff08;Filesystem in Userspace&#xff0c;简称FUSE&#xff09;是操作系统中的概念&#xff0c;指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS&#xff0c;glusterfs和luster使用FUSE实现。       Linux…

29个简单直观的移动设备网页设计

毫无疑问的是移动网络已经风靡世界。运行在iOS或Android智能手机&#xff0c;这两者提供了出色的网页浏览平台。而且这个数字仅仅是预期增加人口的平均工资增长率扩大。 然而该过程的设计和编码移动模板可以是非常乏味。我希望提供一个创造性的思路在这个画廊29个直观的手机设计…

【java】maven工程使用switch时不能使用String解决方法

原因 &#xff1a; 1.7之前不支持使用String 解决方法 &#xff1a; 1、右击程序------》 Build Path ------》Config Build Path 2、选择图示选项 3、更改选项&#xff0c;如图 4、更改编译器 5、将版本改为1.8 6、应用

Oracle 存储过程 无法编译 解决方法(转载)

声明:本文为转载,如果有侵犯知识版本&#xff0c;请通知本人&#xff0c;本人将即刻停止侵权行为: http://blog.csdn.net/tianlesoftware/article/details/7412555 Oracle存储过程无法编译&#xff0c;在PL/SQL中编译&#xff0c;总是挂住了&#xff0c;这个原因可能是要编译的…

交流一点CCNP学习经验

首先反问自己&#xff0c;学习NP的最现实目的是什么。 如果是在校大学生&#xff0c;中专&#xff0c;职高的学生。大多目的是通过一个认证&#xff0c;学习更多有用的知识和技能。招个好工作。有个好的开始。这样应该是把扎实的基础理论和熟练的基础实验操作放在第一位。不要死…

iOS测试基础(命令篇)-iPhone型号及其他信息

首先安装libimobiledevice和ideviceinstaller brew uninstall ideviceinstaller brew uninstall libimobiledevice brew install --HEAD libimobiledevice brew link --overwrite libimobiledevice brew install ideviceinstaller brew link --overwrite ideviceinstaller 应用…

Soft-to-Hard Vector Quantization for End-to-End Learning Compressible Representations

郑重声明&#xff1a;原文参见标题&#xff0c;如有侵权&#xff0c;请联系作者&#xff0c;将会撤销发布&#xff01; Abstract: 我们提出了一种新的方法&#xff0c;通过端到端的训练策略来学习深度架构中的可压缩表征。我们的方法是基于量化和熵的软&#xff08;连续&#x…

Delta3D———通过游戏管理器组件和消息的扩展创建自定义行为 《转》

游戏管理器组件给我们提供了在不修改游戏管理器的情况下灵活扩展我们的自定义行为的能力。游戏管理器组件是基于消息来工作的&#xff0c;定义自定义行为的基本 流程就是创建自定义类型的消息&#xff0c;在合适的时候发送消息&#xff0c;创建自定义游戏管理组件并重写自己的消…

【spring】在不联网的情况下查看xml的定义规则的方法

1、打开依赖 2、打开该jar包 3、打开该包 4、找到xml的规则

常用的js判断

常用的js判断 关于注册的时候&#xff1b;对注册信息的判断&#xff1a; 表单 <form id"form" name"form" method"post" action"" οnsubmit"return CheckPost();"> 引入&#xff1a;<script language"JavaS…

解决Chrome中UEditor插入图片的选择框加载过慢问题

解决Chrome中UEditor插入图片的选择框加载过慢问题 ../resources/plugins/ueditor/ueditor.all.js 中line24489/24498中的 accept"image/*" 修改为 accept"image/jpeg,image/jpg,image/png,image/gif,image/bmp"../resources/plugins/ueditor/dialogs/im…

转:[大数据竞赛]夺冠感言:走进业务,提升对世界的认知能力

http://bbs.aliyun.com/read/153103.html?spm5176.7189909.0.0.KWGWap 一、同为推荐&#xff0c;大不同&#xff01;不知道同学们是否经常在天猫购物&#xff0c;但是相信大家一定听过音乐&#xff0c;看过电影&#xff0c;读过新闻和小说。大家在享受各种娱乐信息的时候&…

【转】C/C++中的日期和时间

头文件 time.h 函数用途 函数名 得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 得到以ASCII码表示的时间 asctime 得到字符串表示的时间 ctime 得到指定格式的时间 strftime 摘要&#xff1a; 本文从介绍基础概念入手&#xff0c;探讨了在C/C中对日…

【spring】di(依赖注入)使用实例

1、xml文件里的配置 <!-- 问题 &#xff1a; 两个bean的顺序可不可以调换&#xff1f; 答 &#xff1a; 可以--><bean id"userDao" class"springboottest.ioc.UserDao"> </bean><bean id"UserService" class"springb…

设置php-fpm使用socket文件

1、在配置文件/usr/local/php/etc/php-fpm.conf文件中找到 <value name "listen_address">127.0.0.1:9000</value> 改为<value name"listen_address"> /var/run/phpfpm.sock</value> 重启php-fpm /usr/local/php/sbin/php-fpm r…

BZOJ1251: 序列终结者

【传送门&#xff1a;BZOJ1251】 简要题意&#xff1a; 给出一个长度为n的序列&#xff0c;有m个操作&#xff0c;3种操作&#xff1a; 1 l r k将l到r的数增加k 2 l r将l到r的数列翻转 3 l r求出l到r的最大值 题解&#xff1a; 裸SPLAY&#xff0c;直接下放两种标记&#xff0c…

Linux笔记 软件管理

一、软件包分类1.软件包分类&#xff1a;源码包、二进制包源码包&#xff1a;源代码1&#xff09;优点&#xff1a;开源&#xff0c;有能力可修改源代码可以自由选择所需的功能软件是编译安装&#xff0c;更适合Linux系统&#xff0c;更稳定效率更高卸载方便。2&#xff09;缺点…

如何有效编写软件的75条建议

1. 你们的项目组使用源代码管理工具了么&#xff1f; 应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。2. 你们的项目组使用缺陷管理系统了么&#xff1f; 应该用。ClearQuest太复杂&#xff0c;我的推荐是BugZilla。 3. 你们的测试组还在用…

【spring】使用spring的环境配置及从官网获得配置文件所用代码的方法

环境配置 1、添加jar包 spring-beans-4.1.3.RELEASE.jarspring-context-4.1.3.RELEASE.jarspring-core-4.1.3.RELEASE.jarspring-expression-4.1.3.RELEASE.jar 2、配置文件 &#xff08;1&#xff09;在下创建一个config文件夹 &#xff08;2&#xff09;在文件夹下创建一…

C语言:1孩半问题

题目&#xff1a; 一孩半&#xff0c;又称独女户二胎&#xff0c;即中国大陆部分农村的一项计划生育政策&#xff0c;第一胎是女孩的夫妻可以生育第二个子女。如果第二胎有n%人工性别选择干预&#xff08;选择男孩&#xff09;&#xff0c;试问男女比例为多少。&#xff08;10分…

Javascript字符串及数组赋值区别

最近做一个分页的javascript程序&#xff0c;需要先将tbody下面的tr标签全部删除&#xff0c;然后再append新的tr&#xff0c;使用下面的代码 var trs$d("tbdoys").getElementsByTagName("tr");for(var j0;j<trs.length;j){$d("tbdoys").remo…

Linux系统分辨率设置

linux 设置分辨率 如果你需要在linux上设置显示屏的分辨率&#xff0c;分两种情况&#xff1a;分辨率模式存在与分辨率模式不存在&#xff0c;具体如下。 1&#xff0c;分辨率模式已存在 1&#xff09;如何查询是否存在&#xff1a; 图形界面&#xff1a;在System Settings/Dis…

【spring】使用构造方法依赖注入

注 &#xff1a; &#xff08;1&#xff09;使用构造方法依赖注入有两种一种是通过参数顺序一种是按照参数类型的顺序 &#xff08;2&#xff09;所有的依赖注入都必须拥有无参的构造方法&#xff0c;一开始没有添加是因为jvm会自动分配 按照参数的顺序 代码实现&#xff1…

【技术贴】火狐的悬停激活标签扩展插件下载。Tab Focus

火狐专用鼠标悬停激活标签&#xff0c;像360和搜狗浏览器那样的把鼠 标放在标签上&#xff0c;一般都是设置200ms激活此标签。 https://addons.mozilla.org/zh-CN/firefox/addon/tab-focus/ 在组件里可以设置Tab Focus &#xff0c;我都是设置1ms激活。比较爽。

数据结构_顺序栈的代码实践

#include <iostream> using namespace std; #define Maxsize 100//预先分配空间&#xff0c;这个数值根据实际情况预估确定 typedef struct SqStack{int *base;//栈底指针int *top;//栈顶指针 }SqStack;bool InitStack(SqStack &S)//构造空栈 {S.base new int…

C#字符串与享元(Flyweight)模式

写这个文章&#xff0c;主要是因为网上对C#字符串和享元模式的误解比较多。 Flyweight模式 先说这名字&#xff0c;fly呢&#xff0c;就是苍蝇&#xff0c;没错这里面不是飞的意思&#xff0c;是苍蝇的意思&#xff0c;weight大家都知道&#xff0c;就是重量&#xff0c;苍蝇的…

CarTool 使用,获取图片资源

程序&#xff1a;gitHub: 项目地址 使用方法&#xff1a; 1.拿到资源包 在itunes里找到喜欢的应用&#xff0c;然后下载&#xff0c;直接将app拖到桌面。得到一个一个ipa资源包&#xff0c;如图 2.将资源包改成zip格式 3.解压zip资源包&#xff0c;随后打开&#xff0c;显示包…