题目描述

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

来源:SCOI 2010

题解

这道题乍一看数据是用不了二分图的

但是真的是这样的么?

细看题后我们发现,并不需要匹配所有边

只要按顺序匹配,失配跳出即可

然后我们很容易能发现,最大连击数显然为n

所以我们可以无视所有大于n的点

然后把小于等于n的点连在n+i上

这样如果某个点连在多个点上,那么它可选择的方式就很多

代码如下:

#include<cstdio>
#include<iostream>
using namespace std;struct edge{int y,ne;
}e[4004005];int n,a,b,ecnt;
int head[2002000],point[2002000];
bool used[2002000];void add(int x,int y)
{e[++ecnt].y=y;e[ecnt].ne=head[x];head[x]=ecnt;
}bool find(int x)
{used[x]=1;for(int i=head[x];i;i=e[i].ne){if(!point[e[i].y]){point[e[i].y]=x;used[x]=0;return 1;}else if(!used[point[e[i].y]]&&find(point[e[i].y])){point[e[i].y]=x;used[x]=0;return 1;}}used[x]=0;return 0;
}int main()
{scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%d%d",&a,&b);if(a<=n)add(a,n+i);if(b<=n)add(b,n+i);}for(int i=1;i<=n;++i)if(!find(i)){printf("%d",i-1);return 0;}printf("%d",n);return 0;
}

转载于:https://www.cnblogs.com/rir1715/p/6847551.html

【二分图】洛谷P1640连续攻击游戏相关推荐

  1. 洛谷P1640 连续攻击游戏 二分图匹配

    给出n≤1e6n\leq1e6n≤1e6个装备,每个装备都有两个属性值,它的范围一定在[1,10000][1,10000][1,10000],你每个装备只能选择一个属性值,然后要求出最长的一段从111 ...

  2. 洛谷 P1129 矩阵游戏

    洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...

  3. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...

  4. 洛谷 P1558 色板游戏

    传送门:洛谷 P1558 色板游戏 算法分析:观察到数据范围:\(1\leq T\leq 30\) ,考虑使用二进制来进行状态压缩 将颜色\(x\)表示为 \(1<<(x-1)\) 即 \ ...

  5. 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)

    洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...

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

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

  7. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  8. 洛谷——P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...

  9. 洛谷P1000 超级玛丽游戏C++题解

    首先我们看这道题的题目"超级玛丽游戏",第一道题就让我们写个游戏出来.结果点进去一看,顿时觉得这道题是在开玩笑,本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续 ...

最新文章

  1. vip能ping通,但80不通的解决方法
  2. CLR Via CSharp读书笔记(26) - 计算限制的异步操作
  3. 09945 oracle 解决方法_ORACLE rman与RMAN-00054ORA-09945
  4. js中常用的操作字符串的方法大全
  5. php mysql增改删_PHP分享:如何实现MySQL的增加删除修改查看
  6. [转]你打算如何提升自己?
  7. 【渝粤教育】国家开放大学2018年秋季 1344T金融风险管理 参考试题
  8. java restlet 教程_Restlet 2.0 边学边写(五)Restlet的POST、PUT和DELETE
  9. Kaldi在线搭建语音识别系统-李健
  10. Linux Rootkit的反侦测手段漫谈
  11. 猎豹浏览器使用评测(2)-一款很轻的极简绿色浏览器
  12. 最新网站外链建设方法大全!
  13. 虹科案例|安全性防护平台-海康威视摄像机中的重大漏洞
  14. 最新2009年度长篇经典小说推荐列表
  15. MangoDB安装教程
  16. 如何轻松打造一款智能防丢神器?让生活更省心省力
  17. Visual Studio Code下载与安装指南
  18. CPU锁频率在0.78 GHz
  19. 面向对象编程,你真正懂吗?
  20. 计算机音乐毕业论文范文,计算机音乐制作毕业论文范文.doc

热门文章

  1. PHP常见的字符串方法
  2. C/C++如何整行读入字符串?
  3. 在ASP.NET MVC中使用IIS级别的URL Rewrite
  4. 使用 UpdatePanel 【转by Dorian Deng】
  5. OpenCV中的cvCreateImage的参数channels()的意义
  6. java怎么让进程停止_JAVA:如何在进程停止时调用一个方法(甚至有可能吗?)
  7. matlab fittype 求不出参数,[转]matlab 中fit fittype
  8. mysql创建临时表 分页_ASP+MySQl利用临时表分页第一页数据正常,下一页往后没有数据...
  9. linux下find命令用法
  10. linux 分区表dd,dd复制分区后目标分区的大小变成原分区了