• BZOJ1854:游戏(二分图匹配)


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

    Input

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

    Output

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

    Sample Input

    3

    1 2

    3 2

    4 5

    Sample Output

    2  

    (N<=1e6).

    题意:就是每个卡片有两个技能(对应两个数字),只可以发动其中一个技能,然后就是要求数值按1,2,3...的顺序来。问最多可以发动几次技能。

    思路:二分图匹配,用数字1,2,3...分别取去匹配对应的卡片,保证了每个卡牌只用一次。 由于最多匹配10000次,而每次匹配的复杂度常数小,所以总的复杂度小于O(10000^2),所以虽然N大,但没问题。

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=2000010; 
    int Laxt[maxn],Next[maxn],To[maxn],cnt;
    int used[maxn],linker[maxn];
    int add(int u,int v)
    {
        Next[++cnt]=Laxt[u];
        Laxt[u]=cnt;
        To[cnt]=v;
    }
    bool find(int u,int F)
    {
        for(int i=Laxt[u];i;i=Next[i]){
            int v=To[i];
            if(used[v]!=F){
                used[v]=F;
                if(!linker[v]||find(linker[v],F)){
                    linker[v]=u;
                    return true;
                }
            }
        }
        return false;
    }
    int main()
    {
        int N,i,x,y;
        scanf("%d",&N);
        for(i=1;i<=N;i++){
            scanf("%d%d",&x,&y);
            add(x,i); add(y,i);
        }
        for(i=1;i<=10001;i++)
            if(!find(i,i)) break;
        printf("%d
    ",--i);
        return 0;
    }
  • 相关阅读:
    caffe杂
    easyui 扩展layout的方法,支持动态添加删除块
    easyui换主题,并记录在cookie
    $.messager.show扩展:指定位置显示
    easyui 扩展 之 Tree的simpleData加载
    easyui menu 添加hideItem/showItem 方法
    HTML标签及属性大全
    适应各种内核浏览器的透明修过样式
    让IE6支持min-width和max-width的方法
    javascript获取html标记的的绝对定位值
  • 原文地址:https://www.cnblogs.com/hua-dong/p/8648787.html
Copyright © 2020-2023  润新知