zoukankan      html  css  js  c++  java
  • 清北考前刷题day5早安

    /*
    C(n,k)
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    #define ll long long
    #define N 1000007
    #define M 1000000007
    
    using namespace std;
    ll n,k,ans,cnt1,cnt0;
    ll inv[N]={1,1},fac[N]={1,1},f[N]={1,1};
    
    inline ll read()
    {
        int x=0,f=1;char c=getchar();
        while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    
    inline void init()
    {
        for(int i=2;i<=N;i++)
        {
            fac[i]=(fac[i-1]%M*i%M)%M;
            f[i]=((M-M/i)%M*f[M%i])%M;
            inv[i]=(inv[i-1]*f[i]%M)%M;
        }
    }
    
    inline ll C(ll a,ll b)
    {
        return fac[a]%M*inv[b]%M*inv[a-b]%M;
    }
    
    int main()
    {
        freopen("cube.in","r",stdin);
        freopen("cube.out","w",stdout);
        n=read();k=read();init();
        printf("%I64d
    ",C(n,k));
        return 0;
    }

    /*
    做最大生成树时标记哪些边被加了进去。然后把这些边排序。
    如果询问权值w的货物,就在边中查找小于w的最大值假设拍第k大
    答案就是k+1。 复杂度O(qlogn) 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm> 
    
    #define N 100007
    
    using namespace std;
    int n,m,q,ans,cnt,num;
    int head[N],fa[N];
    struct edge{
        int u,v,w,net,pos;
        bool operator < (const edge &a) const{
                return w>a.w;
        }
    }e[N<<1],E[N],tmp[N<<1];
    
    inline int read()
    {
        int x=0,f=1;char c=getchar();
        while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    
    inline void add(int u,int v,int w)
    {
        e[++cnt].u=u;e[cnt].v=v;e[cnt].w=w;
        e[cnt].net=head[u];head[u]=cnt;
    }
    
    int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
    
    void kruskal()
    {
        int r1,r2;
        sort(E+1,E+m+1);
        for(int i=1;i<=m;i++)
        {
            r1=find(E[i].u),r2=find(E[i].v);
            if(r1==r2)continue;
            fa[r1]=r2;num++;
            add(E[i].u,E[i].v,E[i].w);add(E[i].v,E[i].u,E[i].w);
            tmp[num].pos=num;tmp[num].u=E[i].u,tmp[num].v=E[i].v;tmp[num].w=E[i].w;
            if(num==n-1) break;
        }
    }
    
    int serch(int x)
    {
        int l=1,r=n-1,mid;
        while(l<=r)
        {
            mid=l+r>>1;
            if(tmp[mid].w>=x) l=mid+1;
            else ans=mid,r=mid-1;
        }return num-ans+1;
    }
    
    int main()
    {
        freopen("warehouse.in","r",stdin);
        freopen("warehouse.out","w",stdout);
        int x,y,z,k;
        n=read();m=read();q=read();
        for(int i=1;i<=n;i++) fa[i]=i;
        for(int i=1;i<=m;i++)
        {
            E[i].u=read();E[i].v=read();E[i].w=read();
        }kruskal();
        for(int i=1;i<=q;i++)
        {
            x=read();
            if(x<=e[cnt].w){printf("1
    ");continue;}
            if(x>e[1].w){printf("%d
    ",n);continue;}
            k=serch(x);
            printf("%d
    ",k+1);
        }
        return 0;
    }

    折花枝,恨花枝,准拟花开人共卮,开时人去时。 怕相思,已相思,轮到相思没处辞,眉间露一丝。
  • 相关阅读:
    2018级 面向对象程序设计 助教总结
    十二,时间序列趋势相似性度量方法的研究-DPM
    第十八周博客作业
    LSTM与BiLSTM
    基于自训练的半监督文本分类算法
    随机游走模型
    PMI点互信息
    Transductive Learning(直推式学习)
    TextCNN实验
    TextCNN
  • 原文地址:https://www.cnblogs.com/L-Memory/p/7768618.html
Copyright © 2011-2022 走看看