题目描述

lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害。也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装备攻击boss,然后只能使用某个属性值为3的装备攻击boss……以此类推。现在lxhgww想知道他最多能连续攻击boss多少次?

输入输出格式

输入格式:

输入的第一行是一个整数N,表示lxhgww拥有N种装备接下来N行,是对这N种装备的描述,每行2个数字,表示第i种装备的2个属性值

输出格式:

输出一行,包括1个数字,表示lxhgww最多能连续攻击的次数。

输入输出样例

输入样例#1: 复制

3
1 2
3 2
4 5

输出样例#1: 复制

2

说明

Limitation

对于30%的数据,保证N < =1000

对于100%的数据,保证N < =1000000

左图为装备  右图为boss

然后从boss的1开始遍历  如果匹配不到  那么就return  因为匈牙利是满足之前全部匹配好的!!

二分匹配也恰好满足 左边装备两个属性只能用一次

还有一个wa点是     有两个点死活TLE

可以增加时间戳标记   这样就不用一直memset used了    跑的飞快

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define inf 0x3f3f3f3f
const int N=1000000+5;
const int M=2000000+5;
int head[M],pos,n,m,flag;
struct Edge
{int nex,to;
}edge[M];
void add(int a,int b)
{edge[++pos].nex=head[a];head[a]=pos;edge[pos].to=b;
}
int vis[N],used[N];bool dfs(int x)
{for(int i=head[x];i;i=edge[i].nex){int v=edge[i].to;if(flag!=used[v]){used[v]=flag;if(!vis[v]||dfs(vis[v])){vis[v]=x;return true;}}}return false;
}int find1()
{int ans=0;rep(i,1,10000){flag++;//用时间戳大大加速if(dfs(i))ans++;else return ans;}return ans;
}int main()
{RI(n);rep(i,1,n){int a,b;RII(a,b);add(a,i);add(b,i);}printf("%d",find1());
}

View Code

并查集:

转载于:https://www.cnblogs.com/bxd123/p/10819672.html

P1640 [SCOI2010]连续攻击游戏 匈牙利算法相关推荐

  1. 洛谷——P1640 [SCOI2010]连续攻击游戏

    P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...

  2. P1640 [SCOI2010]连续攻击游戏:(二分图)

    lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...

  3. P1640 [SCOI2010]连续攻击游戏

    题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...

  4. P1640 [SCOI2010]连续攻击游戏 (二分图)

    传送门 题面: 题解: 不看标签还是很难想到建图,看了标签也想不到怎么建图. 因为每个数字只能被选择一次,每个装备也只能被选择一次,那么就可以考虑装备与两个属性之间建边. 那么问题就变成了二分图最大匹 ...

  5. bzoj1854 [Scoi2010]游戏——匈牙利算法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1854 这题...据说可以用并查集做,但没有去看... 用二分图匹配的话,就把装备和它的两个属 ...

  6. 【洛谷1640】[SCOI2010]连续攻击游戏

    题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...

  7. P1129 [ZJOI2007]矩阵游戏 (匈牙利算法)

    传送门 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个n×n \timesn×n黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次 ...

  8. [luoguP1640] [SCOI2010]连续攻击游戏(二分图最大匹配)

    传送门 我们将每一个属性和物品连边,然后枚举从小到大属性跑匈牙利,直到找不到连边 #include <cstdio> #include <cstring> #include & ...

  9. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

最新文章

  1. Wireshark使用技巧:提取VOIP通话中的音频流
  2. hr2000 光谱Matlab,HR4000 HR2000 HR2000+ 光纤光谱仪 CG HC-1光栅 消除高阶衍射滤光片-广州标旗...
  3. SQLite中的SELECT子句使用别名
  4. moss2007 权限体系分析(深入到数据库结构的分析)
  5. 云原生时代,CNStack 如何解决企业数字化转型难题?
  6. 自定义SpringBoot start 被依赖时 程序包不存在的问题
  7. 打印管理 php,window_强化Windows Server 2008下的打印管理,  打印管理从来都是Windows Se - phpStudy...
  8. css html应用实例1:滑动门技术的简单实现
  9. [vue] vue怎么实现强制刷新组件?
  10. 爆火的Java面试题-kafka源码解析与实战豆瓣
  11. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十九) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏②...
  12. 全新卡盟系统PHP版 集成易支付_PHP全新授权系统支持盗版入库卡密授权
  13. 联想计算机BIOS密码忘记了,联想笔记本CMOS(BIOS)密码清除
  14. UWP 应用通知Notifications
  15. 在地化和本土化的区别_本地化和翻译的本质区别在哪里?
  16. 网络运维工程师 ,需要掌握知识的总结。
  17. 【论文精读】Parallax-Tolerant Image Stitching Based on Robust Elastic Warping
  18. SpringBoot整合druid数据源,quartz定式框架
  19. Project Euler Problem 53: Combinatoric selections【组合数】
  20. 个人看法---如何做一个视频聊天室?

热门文章

  1. flex3通过fluorinefx跟asp.net进行数据交互
  2. 《LeetCode力扣练习》第20题 有效的括号 Java
  3. Vue:echarts的柱状图怎样按照比例缩小?
  4. 7万能驱动64位离线_Dism++离线安装.NET Framework 3.5教程
  5. mysql userstat_mysql 中记录用户登录错误日志方法小结
  6. url 参数 后台 加密_一套拿来即用的后台管理系统,非常方便(附项目地址)
  7. sqlalchemy exists 子查询_学好ORM框架SQLAlchemy面试必问
  8. 怎么做圆一圈圈扩散效果_推广为什么没有效果,网络推广怎么做才有效果?
  9. oracle创建序列seq起始值为1_oracle 重置序列从指定数字开始的方法详解
  10. sql join on 多表连接_SQL 多表查询-交叉连接(笛卡尔积)