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);
        }
    }
    
  • 相关阅读:
    指针与数组实例练习(指针运算)
    C语言数组和函数实例练习(二)
    C语言数组和函数实例练习(一)
    近一个月的学习总结(4.8—5.12)
    Java网页小程序——Java Applet
    数据结构(二)线性表——链表
    JDBC的使用(MySQL数据库)
    Python变量类型及变量
    Shell编程语法
    文本处理三剑客
  • 原文地址:https://www.cnblogs.com/maoruimas/p/9643068.html
Copyright © 2011-2022 走看看