zoukankan      html  css  js  c++  java
  • joj 2645

      并查集的一道题,绞尽脑汁想了用并查集算法但总是过不去,后来在网上查了代码(最近好像总是每次都有一个小错误过不去,蛋疼啊),发现了原来是sum应该定义为longlong - - ,但我不会用那东西,毕竟不同的oj对他的输入输出控制不同,所以用的double,最后发现竟然挤进了这道前十,对我是莫大的鼓舞啊:

    #include<iostream>
    #include<stdio.h>
    #include<vector>
    using namespace std;
    struct task{
         int p;
         int d;
    };
    task t[100008];
    int m[100008];
    bool cmp(task a,task b)
    {
         return a.p>b.p;
    }
    int find(int x)
    {
        if(m[x]==x)
           return x;
        else return m[x]=find(m[x]);
    }
    void uion(int a,int b)
    {
         m[b]=a;
    }
    int main()
    {
        int i,n;
        for(i=0;i<100008;i++)
           m[i]=i;
        while(scanf("%d",&n)!=EOF)
        {
           vector<int> v;
           int len=0,max_day,j;
           double sum=0;
           for(i=1;i<=n;i++)
               scanf("%d%d",&t[i].p,&t[i].d);
           sort(t+1,t+n+1,cmp);
           for(i=1;i<=n;i++)
           {
              int a=find(t[i].d);
              if(a>0)
              {
                   uion(a-1,a);
                   sum+=t[i].p;
                   v.push_back(a);
              }
           }
           for(i=0;i<v.size();i++)
              m[v[i]]=v[i];
           printf("%.0lf\n",sum);
        }
    }
    /*
    7
    35 4 30 2 25 4 20 3 15 4 10 8 5 3
    4
    100 2 30 1 15 2 20 1 */

  • 相关阅读:
    Anaconda下载及安装教程
    机器学习之一元线性回归模型
    PyCharm下载及安装教程
    Python基础之数据类型、变量、常量
    新旧代码的兼容(c和c++)
    埃拉托斯特尼--筛法 c++求质数,用bitset类型
    使用预处理器进行调试
    刷题-网易2018实习生招聘笔试题
    深度优先搜索-DFS遍历图-C++
    图--邻接矩阵c++
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985959.html
Copyright © 2011-2022 走看看