zoukankan      html  css  js  c++  java
  • HDU 5877 Weak Pair

    A得十分心虚,在自己机子上跑得太慢了,而且没考虑啊a[I]=0的情况

    #include<conio.h>
    #include<bits/stdc++.h>
    using namespace std;
    #define rep(i,a,b) for(int i=a;i<=b;++i)
    const int maxn=1e5+5;
    struct rec
    {
        long long kinva;
        int id;
        rec(){}
        rec(long long x,int y):kinva(x),id(y){}
        bool operator < (const rec& a)const{return kinva>a.kinva;}
    }inv[maxn];
    int n;
    long long k;
    vector<int> tree[maxn];
    int a[maxn],f[maxn],Ftree[maxn],ask[maxn];
    inline int lowbit(int x)
    {
        return x&(-x);
    }
    void add(int i,int k)
    {
        while(i<maxn){Ftree[i]+=k;i+=lowbit(i);}
    }
    int sum(int i)
    {
        int ret=0;
        while(i){ret+=Ftree[i];i-=lowbit(i);}
        return ret;
    }
    int ans;
    void dfs(int p,int u)
    {
        ans+=sum(ask[u]);
        add(f[u],1);
        int sz=tree[u].size();
        for(int i=0;i<sz;++i)
        {
            if(tree[u][i]==p)continue;
            dfs(u,tree[u][i]);
        }
        add(f[u],-1);
        //printf("%d->%d,ask[%d]=%d,ans=%d
    ",p,u,u,ask[u],ans);
    }
    int main()
    {
        //freopen("Input.txt","r",stdin);
        int T;scanf("%d",&T);
        while(T--)
        {
            memset(Ftree,0,sizeof Ftree);for(int i=1;i<=n;++i)tree[i].clear();
            scanf("%d%lld",&n,&k);
            for(int i=1;i<=n;++i){scanf("%d",a+i);inv[i]=rec(k/a[i],i);}
            sort(inv+1,inv+n+1);
            for(int i=1;i<=n;++i)f[inv[i].id]=i;
            for(int i=1,j=n;j>0;j--){while(i<=n&&a[inv[j].id]<=inv[i].kinva)i++;ask[inv[j].id]=i-1;}
            int root,note[maxn];memset(note,0,sizeof note);
            for(int i=1;i<n;++i){int u,v;scanf("%d%d",&u,&v);tree[u].push_back(v);tree[v].push_back(u);note[v]=1;}
            for(root=1;note[root];root++);
            ans=0;dfs(0,root);
            printf("%d
    ",ans);
        }
    }
    
  • 相关阅读:
    引用传递函数值
    关于引用(python中的伪指针)的理解
    学生管理系统_排序后通过name删除列表里的字典
    学生管理系统(函数版)
    全局变量和局部变量的理解
    lambda隐藏函数的嵌套
    lambda函数常见用法
    函数的多个返回值
    函数的函数名重名
    函数的嵌套
  • 原文地址:https://www.cnblogs.com/maoruimas/p/9643068.html
Copyright © 2011-2022 走看看