zoukankan      html  css  js  c++  java
  • 2G 连续攻击游戏

    题目

    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
    

    Hint

    【数据范围】
    对于30%的数据,保证N < =1000
    对于100%的数据,保证N < =1000000

    题解

    解题思路

    为数不多的不抄题解就写出来的题
    一把武器有两个值,用了一个,另一个就不能用了
    我想到标记,将一把武器看成一条无向边(其实和图没什么关系,这里的边只是用来储存值)
    从1开始遍历,找到1连接的的点中值最小的,将这条边标记
    直到遍历到k时找不到一把武器可以实现,最多的攻击次数就是k-1

    代码

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int N = 1e6+5;
    struct side {
        int t, next;
    }e[N*2];
    int head[N], tot = 1;
    void add(int x, int y) {
        e[++tot].next = head[x];
        head[x] = tot;
        e[tot].t = y;
    }
    int n, v[N*2], ans, m;
    int main() {
        scanf("%d", &n);
        for(int i = 1; i <= n; i++) {
            int x, y;
            scanf("%d%d", &x, &y);
            m = max(m, max(x, y));
            add(x, y); add(y, x);
        }
        e[0].t = m + 1;
        for(int x = 1; x <= m + 1; x++) {
            int f = 0, h = 0;
            for(int i = head[x]; i; i = e[i].next) 
                if (!v[i] && e[h].t > e[i].t) h = i, f = 1;
            if (f) v[h] = v[h^1] = 1;
            else {
                ans = x - 1;
                break;
            }
        }
        printf("%d", ans);
        return 0;
    }
    

    注意:这个不是正解,毕竟找到一组能卡掉这个代码的数据也很容易,但是原题数据比较水,还是可以水过的

  • 相关阅读:
    LeetCode Count of Range Sum
    LeetCode 158. Read N Characters Given Read4 II
    LeetCode 157. Read N Characters Given Read4
    LeetCode 317. Shortest Distance from All Buildings
    LeetCode Smallest Rectangle Enclosing Black Pixels
    LeetCode 315. Count of Smaller Numbers After Self
    LeetCode 332. Reconstruct Itinerary
    LeetCode 310. Minimum Height Trees
    LeetCode 163. Missing Ranges
    LeetCode Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/Z8875/p/12826076.html
Copyright © 2011-2022 走看看