2718: [Violet 4]毕业旅行
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 366 Solved: 204
Description

Input

Output
最多可选多少景点
Sample Input
7 6
1 2
2 3
5 4
4 3
3 6
6 7
Sample Output
2
Source
Ctsc2008 River & ural 1533. Fat Hobbits
最长反链=最小路径覆盖。。
裸题。。求最长反链。。
Dilworth定理。。
在有向无环图中,有如下的一些定义和性质:
链:一条链是一些点的集合,链上任意两个点x, y,满足要么 x 能到达 y ,要么 y 能到达 x 。
反链:一条反链是一些点的集合,链上任意两个点x, y,满足 x 不能到达 y,且 y 也不能到达 x。
一个定理:最长反链长度 = 最小链覆盖(用最少的链覆盖所有顶点)
对偶定理:最长链长度 = 最小反链覆盖
那么我们要求出的就是这个有向无环图的最小链覆盖了。最小链覆盖也就是路径可以相交的最小路径覆盖。
我们先来看路径不能相交的最小路径覆盖怎么来做:
建立一个二分图,两边都是n个点,原图的每个点 i 对应两个,在左边的叫做 i1, 在右边的叫做 i2 。
然后原图中如果存在一条边 (x, y),那么就在二分图中建立 (x1, y2) 的边。
这样建立二分图之后,原图的点数 n - 二分图最大匹配 = 原图的最小路径覆盖(路径不能相交)。
这样为什么是对的呢?我们可以认为,开始时原图的每个点都是独立的一条路径,然后我们每次在二分图中选出一条边,就是将两条路径连接成一条路径,答案数就减少1。
而路径是不能相交的,所以我们在二分图中选出的边也是不能相交的所以就是二分图的最大匹配。
了解了路径不能相交的最小路径覆盖之后,怎么解路径可以相交的最小路径覆盖(也就是最小链覆盖)呢?
我们将原图做一次Floyd传递闭包,之后就可以知道任意两点 x, y,x 是否能到达 y。
如果两个点 x, y,满足 x 可以到达 y ,那么就在二分图中建立边 (x1, y2) 。
这样其实就是相当于将原图改造了一下,只要 x 能到达 y ,就直接连一条边 (x, y),这样就可以“绕过”原图的一些被其他路径占用的点,直接构造新路径了。
这样就将可以相交的最小路径覆盖转化为了路径不能相交的最小路径覆盖了。
双倍经验题:BZOJ1143祭祀river
附上本蒟蒻的代码:

#include<cstdio>
#include<cstring>
using namespace std;
int n,m,h[40001],part[40001],ans=0,cnt=1,f[201][201];
bool used[40001];
struct kx
{int to,next;
}edge[40001];int read()
{int w=0,c=1;char ch=getchar();while (ch<'0' || ch>'9'){if (ch=='-') c=-1;ch=getchar();}while (ch>='0' && ch<='9')w=w*10+ch-'0',ch=getchar();return w*c;
}void add(int u,int v)
{cnt++,edge[cnt].next=h[u],h[u]=cnt,edge[cnt].to=v;
}void floyed()
{int k,i,j;for (k=1;k<=n;k++)for (i=1;i<=n;i++)for (j=1;j<=n;j++)f[i][j]|=(f[i][k]&f[k][j]);//神奇的地方
}bool find(int s)
{int k;for (k=h[s];k;k=edge[k].next)if (!used[edge[k].to]){used[edge[k].to]=true;if (!part[edge[k].to] || find(part[edge[k].to])){part[edge[k].to]=s;return true;}}return false;
}int main()
{int i,u,v,j;n=read(),m=read();for (i=1;i<=m;i++)u=read(),v=read(),f[u][v]=1;floyed();for (i=1;i<=n;i++)for (j=1;j<=n;j++)if (f[i][j])add(i,j+n);for (i=1;i<=n;i++){memset(used,false,sizeof(used));if (find(i)) ans++;}printf("%d",n-ans);return 0;
}

BZOJ2718毕业旅行相关推荐

  1. 2016级算法期末模拟练习赛-A.wuli51和京导的毕业旅行

    1063 wuli51和京导的毕业旅行 思路 中等题,二分+贪心. 简化题意,将m+1个数字分成n份,ans为这n段中每段数字和的最大值,求ans最小值及其方案. 对于这种求最小的最大值,最常用的方法 ...

  2. 字节跳动---毕业旅行问题

    字节跳动-毕业旅行问题 文章目录 字节跳动---毕业旅行问题 一.问题描述 二.分析 三.代码 一.问题描述 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市 ...

  3. 滴滴笔试毕业旅行——回溯法(dfs)

    题目: 题目描述: 小滴正在筹划他的毕业旅行.他打算去找他的外国网友们,首先第一站是法国巴黎,但是去巴黎的路线有很多,交通工具也有很多可供选择.现在有一个结点数为n,边的条数为m的无向图表示小滴到巴黎 ...

  4. 毕业旅行 | 用一场纽约5日游告别难忘青葱岁月

    时光如梭,毕业季悄然而至,青葱岁月的点点滴滴终将成为美好回忆.和朋友们用一场毕业旅行告别无悔青春,缅怀那些一起哭过笑过的日子,迎接人生旅程的全新开始吧~~为你的毕业季带来满满仪式感! 第一天 随上随下 ...

  5. 字节编程题 毕业旅行问题

    小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的花销.给定一组 ...

  6. 马卡龙色系旅游相册毕业纪念册毕业旅行PPT模板-优页文档

    模板介绍 马卡龙色系旅游相册毕业纪念册毕业旅行PPT模板-优页文档.一套,毕业答辩,毕业相册,幻灯片模板,内含青色,红色多种配色,风格设计,动态播放效果,精美实用. 希望下面这份精美的PPT模板能给你 ...

  7. BZOJ 2718/1533 Violet 4 毕业旅行

    2718: [Violet 4]毕业旅行 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 676  Solved: 391 [Submit][Stat ...

  8. [编程题]毕业旅行问题

    [编程题]毕业旅行问题 时间限制:1秒 空间限制:32768K 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有 ...

  9. 毕业旅行~丽江、玉龙雪山、泸沽湖、丽江古城(2019)

    前传 没有一个人喜欢重复的工作,喜欢重复的生活.眼看马上就要大学毕业了,作为一个来自北方的孩子,竟然还对于潮湿武汉的生活意犹未尽,对于华科的"枯燥"的学习生活仍然依依不舍.毕竟在华 ...

最新文章

  1. mysql dba系统学习(18)mysql主从复制的实现 mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
  2. 红外传感器型号和参数_LARK1Z CO2 20%VOL红外气体传感器
  3. JOJ的2042面试题目的数学推导过程
  4. REVERSE-PRACTICE-BUUCTF-21
  5. 计算机中那些事儿(二):如何神操作你的电脑
  6. Android智能电视应用程序开发浅谈(二)
  7. primefaces_Primefaces选项卡,TabMenu,TabView,TagCloud
  8. 【期末复习】计算机算法设计与分析
  9. 小波去噪程序c语言,小波去噪c语言程序
  10. html怎么设置鼠标手势,css怎么设置鼠标手势?
  11. js正则贪婪模式_js 正则表达式问题 贪婪与非贪婪
  12. 安全芯片介绍-身份认证加密芯片方案
  13. jquery easyui datagrid 列自适应窗口宽度
  14. Nacos百度网盘下载
  15. ROS用python编写订阅者和发布者(使用存放在其他package的自定义msg文件)
  16. PCM音频采样数据处理
  17. 阅读《A2-RL: Aesthetics Aware Reinforcement Learning for Image Cropping Debang》
  18. 在PHP中implement什么意思,详解php中的implements 使用
  19. Substance与PBR工作流总结
  20. 自动生成作文的软件分享,ai写作软件推荐!​

热门文章

  1. Pyf20230313-14(Python列表)
  2. Excel 2003 函数应用完全手册
  3. 【大数据】大数据时代,别让思维方式拖你后腿
  4. 卷积LSTM网络应用于时空序列预测
  5. mysql for mac 使用教程_MySQL的安装和使用教程windows
  6. 上门洗车小程序功能有哪些?
  7. jpress日志输出控制
  8. 关于对数据分析前辈的一次行业探讨
  9. 用lua解决八皇后问题
  10. MySQL常见的性能优化