P1640 [SCOI2010]连续攻击游戏

题目描述

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

这题?$sort$一遍不就通过了吗,$O(nlogn)$

  1. #include<bits/stdc++.h>
  2.  
  3. #define N 1000005
  4. using namespace std;
  5.  
  6. int n;
  7. struct node{
  8. int a,b;
  9. }e[N];
  10. bool vis[N];
  11.  
  12. bool cmp(node A,node B){
  13. return A.a==B.a ? A.b<B.b : A.a<B.a;
  14. }
  15.  
  16. int main()
  17. {
  18. scanf("%d",&n);
  19. for(int i=;i<=n;i++){
  20. scanf("%d%d",&e[i].a,&e[i].b);
  21. if(e[i].a>e[i].b) swap(e[i].a,e[i].b);
  22. }
  23. sort(e+,e++n,cmp);
  24.  
  25. for(int i=;i<=n;i++){
  26. if(!vis[e[i].a]) vis[e[i].a]=;
  27. else vis[e[i].b]=;
  28. }
  29.  
  30. for(int i=;i<=N-;i++){
  31. if(!vis[i]){
  32. printf("%d\n",i-);
  33. return ;
  34. }
  35. }
  36.  
  37. }

不过二分图最大匹配的思路时间复杂度貌似更有优秀啊

将属性向编号连边,就好像属性在编号里匹配,把它抽象成物品就好理解啦

  1. #include<bits/stdc++.h>
  2.  
  3. #define N 4000005
  4. using namespace std;
  5.  
  6. int n,head[N],tot,ans;
  7. struct node{
  8. int to,next;
  9. }e[N];
  10.  
  11. void add(int u,int v){
  12. e[++tot].to=v,e[tot].next=head[u],head[u]=tot;
  13. }
  14.  
  15. int dfn[N],match[N];
  16. bool dfs(int u,int t){
  17. for(int i=head[u];i;i=e[i].next){
  18. int v=e[i].to;
  19. if(dfn[v]!=t){
  20. dfn[v]=t;
  21. if(!match[v]||dfs(match[v],i)){
  22. match[v]=u;
  23. return true;
  24. }
  25. }
  26. }
  27. return false;
  28. }
  29.  
  30. int main()
  31. {
  32. scanf("%d",&n);
  33. for(int u,v,i=;i<=n;i++){
  34. scanf("%d%d",&u,&v);
  35. add(u,i),add(v,i);
  36. }
  37.  
  38. for(int i=;i<=;i++){
  39. if(dfs(i,i)) ++ans;
  40. else break;
  41. }
  42.  
  43. printf("%d\n",ans);
  44. }

洛谷——P1640 [SCOI2010]连续攻击游戏的更多相关文章

  1. 洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告

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

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

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

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

    https://www.luogu.org/problem/show?pid=1640 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1, ...

  4. 洛谷 P1640 SCOI2010 连续攻击游戏 并查集

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

  5. 洛谷P1640 [SCOI2010]连续攻击游戏 题解

    题目链接: https://www.luogu.org/problemnew/show/P1640 分析: 这道题用二分图来解决即可.应该可以作为网络流中的模板题来食用, 每一个武器有两个属性,但是只 ...

  6. 洛谷P1640 SCOI2010 连续攻击游戏 (并查集/匹配)

    本题介绍两种做法: 1 并查集 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1000005; 4 int ...

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

    题目大意:有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.每种装备最多只能使用一次,且只能使用其中一种属性.装备所使用的属性值必须从1开始连续.问最多能攻击多少次? ...

  8. 洛谷 P1640 [SCOI2010]连续攻击问题

    洛谷 一句话题意: 每个武器有两种属性,每种武器只能选择一种属性,从属性1连续递增才算攻击,求最大连续攻击次数. 因为同学告诉我这是二分图最大匹配,自然就往那个方向去想. 那么怎么建图呢? 每个武器只 ...

  9. 洛谷 P1640 【连续攻击游戏】

    question bank :luogu question Number :1640 title :Continuous attacking game link :https://www.luogu. ...

随机推荐

  1. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

  2. 问题 3: 糖果数(candy)

    问题 3: 糖果数(candy) 题目描述 学校准备去春游,委托小明分发糖果,每位同学一袋,数量随机. 一共有N袋糖果,编号为1到N,小明拿了从编号a袋到编号b袋的糖果去分发,小明想知道,他一共拿了多 ...

  3. C++中的定位放置new(placement new)

    一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间.申请所得的空间的位置时根据当时的内存的实际使用情况决定的.但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是 ...

  4. 清除select自带小三角

    select {/*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/border: solid 1px #000; /*很关键:将默认的select选择框样式清除*/appeara ...

  5. ios微信浏览器click事件不起作用的解决方法

    $(document).on( "click", ".weui_cell", function (event) {alert(); }); JS代码是这样的,h ...

  6. 使用原生javascript实现jquery的$(function(){ })

    在使用jquery的时候,经常用到$(function(){})方法或者是$(document).read(function(){})来作为页面dom节点加载完成之后javascript的执行入口,现 ...

  7. 阿里Canal框架(数据同步中间件)初步实践

    最近在工作中需要处理一些大数据量同步的场景,正好运用到了canal这款数据库中间件,因此特意花了点时间来进行该中间件的的学习和总结. 背景介绍 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存 ...

  8. idea DeBug调试学习

    在Intellij IDEA中使用Debug 目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中 ...

  9. 人物丨让小三吐血,让原配泣血——24K渣男郎咸平

    http://url.cn/5swgmythttps://www.toutiao.com/i6650650793743483395人物丨让小三吐血,让原配泣血——24K渣男郎咸平 人物丨让小三吐血,让 ...

  10. 5款好用的mysql客户端

    1. EMS SQL Manager for MySQL 是一款高性能MySQL数据库服务器系统的管理和开发工具.它支持从MySQL 3.23到6.0的任一版本,并支持最新版本的MySQL的特点,包括 ...