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 */

  • 相关阅读:
    从OkHttp的源码来看 HTTP
    从Retrofit的源码来看 HTTP
    登录授权、TCP/IP、HTTPS
    编码、加密、Hash
    java获取当前系统时间
    mybatis自动生成
    rabbitMQ权限相关命令
    在Spring Boot中使用Spring Security实现权限控制
    学习sharding-jdbc 分库分表扩展框架
    Jenkins的关闭、重启
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985959.html
Copyright © 2011-2022 走看看