zoukankan      html  css  js  c++  java
  • HDU-3038-How Many Answers Are Wrong

    链接:https://vjudge.net/problem/HDU-3038#author=0

    题意:

    给出N和M

    有M次记录,以l,r,v给出,表示l-r区间和为v问,有多少是错误的答案。

    思路:

    带权并查集。

    sum[i] 表示i到F[i]的和。

    代码:

    #include <iostream>
    #include <memory.h>
    #include <string>
    #include <istream>
    #include <sstream>
    #include <vector>
    #include <stack>
    #include <algorithm>
    #include <map>
    #include <queue>
    #include <math.h>
    using namespace std;
    const int MAXN = 500086;
    int Father[MAXN];
    int Sum[MAXN];
    
    int Get_F(int x)
    {
        if (x == Father[x])
            return x;
        int tmp = Father[x];
        Father[x] = Get_F(Father[x]);
        Sum[x] += Sum[tmp];
        return Father[x];
    }
    
    int main()
    {
        int n,m;
        //while (scanf("%d%d",&n,&m))
        while (cin >> n >> m)
        {
            for (int i = 0; i <= n; i++)
                Father[i] = i;
            memset(Sum, 0, sizeof(Sum));
            int l, r, v;
            int cnt = 0;
            for (int i = 1; i <= m; i++)
            {
                scanf("%d%d%d", &l, &r, &v);
                l--;
                int tl = Get_F(l);
                int tr = Get_F(r);
                if (tl != tr)
                {
                    Father[tl] = tr;
                    Sum[tl] = Sum[r] + v - Sum[l];
                }
                else
                {
                    if (Sum[l] - Sum[r] != v)
                        cnt++;
                }
            }
            printf("%d
    ", cnt);
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    斐波纳契数列
    实现刮刮乐的效果
    简易版美图秀秀
    js 宏任务和微任务
    作业3 阅读
    作业2 结对子作业
    做汉堡
    练习一
    Java设计模式十八:代理模式(Proxy)
    Java设计模式二十:适配器模式(Adapter)
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10300726.html
Copyright © 2011-2022 走看看