神奇了

朴素的做法不难想,二分图最大匹配(汗,我其实还是想了一会,太弱了)

左边点集为能打的属性值,右边把武器作为一个点

武器和两个属性连边,

然后和superhero那题差不多,顺次找匹配,找不到了就退

然后分析一下规模,感觉能卡过去,于是就真卡过去了(……)

其实,因为n很大,每次找匹配要fillchar一下visit数组很浪费时间

于是就加了个队列记录前一次访问过的点

竟然就过去了……论常数优化的重要

 type node=record
       next,point:longint;
     end; var edge:array[..] of node;
    v:array[..] of boolean;
    p:array[..] of longint;
    q,cx,cy:array[..] of longint;
    j,t,s,n,i,x,y,ans,max:longint; procedure add(x,y:longint);
  begin
    inc(s);
    edge[s].point:=y;
    edge[s].next:=p[x];
    p[x]:=s;
  end; function dfs(u:longint):boolean;
  var i,j:longint;
  begin
    i:=p[u];
    while i<> do
    begin
      j:=edge[i].point;
      if not v[j] then
      begin
        v[j]:=true;
        inc(t);
        q[t]:=j;
        if (cy[j]=) or dfs(cy[j]) then
        begin
          cx[u]:=j;
          cy[j]:=u;
          exit(true);
        end;
      end;
      i:=edge[i].next;
    end;
    exit(false);
  end; begin
  readln(n);
  for i:= to n do
  begin
    readln(x,y);
    add(x,i);
    add(y,i);
    if x>max then max:=x;
    if y>max then max:=y;
  end;
  ans:=max;
  for i:= to max do
    if cx[i]= then
    begin
      for j:= to t do
        v[q[j]]:=false;     //关键啊,能不写fillchar就不写
      t:=;
      if not dfs(i) then
      begin
        ans:=i-;
        break;
      end;
    end;
  writeln(ans);
end.

然后去看了一下正解,感觉真的不容易想到:

还是把属性值看做点,把武器看做连接两个属性值的边(无向边)

1.对于一个联通块,假如不含环(就是一棵树),那么必定可以满足其中任意的p-1个点。
2.对于一个联通块,假如含环,那么必定全部的p个点都能满足。

然后就可以利用并查集优越的时空复杂度了,

bzoj1854的更多相关文章

  1. 【BZOJ1854】[Scoi2010]游戏 二分图最大匹配

    [BZOJ1854][Scoi2010]游戏 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当 ...

  2. bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏)

    bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏) 据说正解是并查集???我不会 这不是一道匈♂牙利好题吗??? 一个装备的两个属性都向它连边,然后跑一遍匈♂牙利 注意: ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. bzoj1854 游戏

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

  5. [BZOJ1854][Scoi2010]游戏(二分图匹配/并查集)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1854 分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法 ...

  6. [bzoj1854][SCOI2010]游戏

    Description 一个装备有两个属性,一个装备只能被使用一次,一次使用一种属性.攻击boss时需按属性1.属性2.属性3...属性k的顺序使用,问k最大为多少. Input 输入的第一行是一个整 ...

  7. BZOJ-1854 游戏 二分图匹配 (并查集)

    1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 3372 Solved: 1244 [Submit][Status] ...

  8. BZOJ两水题连发~(BZOJ1854&&BZOJ1191)

    前言:两题都是省选题不过水的惊人,且都可以用二分图最大匹配做哎--- 1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: ...

  9. BZOJ1854: [Scoi2010]游戏 二分图

    很早之前写的题了,发现没有更博,想了想,更一发出来. Orz ljss 这是冬令营上的例题...之后,我推出来了一种时间复杂度没有问题,空间复杂度没有问题的方法,额(⊙o⊙)…和给出的正解不同,但是能 ...

随机推荐

  1. Nat网络地址转换

    Nat中的术语 -------------------------------------------------------------------------------------------- ...

  2. 【原创】一起学C++ 之指针的--/++ ---------C++ primer plus(第6版)

    讲*和++同时用于指针时提出了这样的问题:将什么解除引用,将什么递增. ]={21.1, 32.8, 23.4, 45.2, 37.4 }; double *pt=arr; //pt指针指向arr[0 ...

  3. NodeJs环境部署

    node cli.js install npm -gf npm install express -gd

  4. 拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!

    一个负心汉即将移情别恋,从51转到ARM妹子啦?其实8是的,俺准备开后宫.哇——咔~咔~~.考虑功耗和成本等问题,只有51肯定是不够的,所以嘛~~(一脸坏笑)嘿嘿~~,ARM妹子俺追定了.出于对ARM ...

  5. ASP.NET MVC的约定

    ASP.NET MVC 应用程序遵循以下3条约定: 所有的控制器的名称都以Controller结尾,如HomeController, AccountController 这些类默认在Controlle ...

  6. 【学习总结】 init & initWithFrame & initWithCoder

    //当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (se ...

  7. 【BZOJ 1798】 [Ahoi2009]Seq 维护序列seq

    Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...

  8. resin access.log format配置详解

    The access log formatting variables follow the Apache variables:     %b result content length %D tim ...

  9. Sql查询除ID以外相同的数据

    id    NAME    AGE1    n1         12    n1         13    n2         24    n2         25    n22       ...

  10. Csharp volatile 关键字

    volatile 关键字指示一个字段可以由多个同时执行的线程修改.声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制.这样可以确保该字段在任何时间呈现的都是最新的值. vola ...