• qko的烦恼 牛客练习赛34


    链接:https://ac.nowcoder.com/acm/contest/316/J
    来源:牛客网
     

    题解:官方给的。qwq  这个代码可能过不去,卡内存点,理论上代码就是这样,多交几次就能过。

    代码:

    #include <iostream>
    
    using namespace std;
    typedef long long ll;
    const ll maxn=1e6+5;
    const ll mod=1e9+7;
    ll par[maxn];
    ll n,m;
    ll getfa(ll x){
        if(par[x]==x) return x;
        return par[x]=getfa(par[x]);
    }
    
    void init(){
        for(ll i=1;i<=n+1;i++)
            par[i]=i;
    }
    int main(){
        //ll n,m;
        cin>>n>>m;
        ll ans=1;
        /*for(ll i=1;i<=n+1;i++)
            par[i]=i;*/
        init();
        while(m--){
            ll l,r;
            cin>>l>>r;
            for(ll i=getfa(l);i<=r;i=getfa(i+1)){
                par[i]=i+1;
                n--;
            }
            ans=ans*n%mod;//ans%=mod;
        }
        cout<<ans<<endl;
        return 0;
    }
    

    题目描述


    黄海同学最近迷上了黑白棋,而作为忠实挂件的qko则成为了黄海同学的陪练对象,黑白棋的规则很简单,初始旗子都是白色的,每一次操作黄海同学都能将[l,r]内的白色旗子变成黑色旗子(变黑以后就不能变白了咯!),每一次操作后黄海同学都会向qko询问剩下的白色旗子的个数 为了减少输出的规模 我们将每次询问后的值相乘后输出其在模1e9+7的答案

    输入描述:

    输入两个整数n(1<=n<=1000000),m(1<=m<=1000000),接下来输出m个区间[l,r],表示每次操作的区间,并且(1<=l<=r<=n)

    输出描述:

    输出一个数 表示每次操作后剩余白色节点的乘积在模1e9+7下的答案

    示例1

    输入

    复制

    10 3
    3 3
    5 7
    2 8

    输出

    复制

    162
  • 相关阅读:
    简单计算器--hdu1237(栈的运用)
    Bone Collector
    Red and Black---hdu1312(dfs)
    RTMP规范简单分析
    FFMPEG中最关键的结构体之间的关系
    面向对象与形而上学
    洛谷 P2913 [USACO08OCT]车轮旋转Wheel Rotation
    洛谷 P1889 士兵站队
    洛谷 P1885 Moo
    洛谷 P1683 入门
  • 原文地址:https://www.cnblogs.com/UUUUh/p/10284042.html
Copyright © 2020-2023  润新知