qko的烦恼 牛客练习赛34

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

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

qko的烦恼 牛客练习赛34_第1张图片

qko的烦恼 牛客练习赛34_第2张图片

代码:

#include 

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<

题目描述


黄海同学最近迷上了黑白棋,而作为忠实挂件的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

转载于:https://www.cnblogs.com/UUUUh/p/10284042.html

你可能感兴趣的:(qko的烦恼 牛客练习赛34)