zoukankan      html  css  js  c++  java
  • NOIP模拟题——Mushroom的区间

    【题目描述】
    Mushroom有一行数,初始时全部是0。现在Mushroom有m个区间[L,R],他希望用以下操作得到新的序列。
    从m个给定区间中选择一个区间[s,t],把区间中的数对应元素全部翻转。(0变1,1变0)
    请告诉Mushroom他能得到多少区间。(模10^9+7)
    【输入格式】
    第一行包含两个整数n,m。表示n个数和m个区间。
    接下来m行是所表示的区间。
    【输出格式】
    一个整数,表示能得到的区间数。
    【样例输入】
    3 3
    1 1
    2 2
    3 3
    【样例输出】
    8
    【数据范围】
    对于30%的数据,n,m<=20
    对于60%的数据,n,m<=100
    对于100%的数据,n,m<=100000
    【样例解释】
    每个位置都可以单个修改,所以有8种可能。

    此题ans=pow(2,m),但m需要处理,也就是有重复的就要删去

    情况1:

    这种情况很明显可以得出上面的边需要删去,m--

    情况2:

    这种情况也很明显也可以得出上面的边需要删去,m--(考试的时候就没有考虑到这个情况,3个TLE,7个wa……)

     于是就得到了很神奇的并查集算法。(很神奇是不是,我也是这么觉得)

    只要两点的father相等,说明先前已经连上,后来加的边可以删去

    然后直接累乘就能过了。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cmath>
     5 using namespace std;
     6 int n,m;
     7 const int maxn=100005;
     8 long long mod=1e9+7;
     9 int fa[maxn];
    10 int findfather(int x)
    11 {
    12     if(fa[x]==x)return x;
    13     return fa[x]=findfather(fa[x]);
    14 }
    15 int main()
    16 {
    17     freopen("seg.in","r",stdin);
    18     freopen("seg.out","w",stdout);
    19     scanf("%d%d",&n,&m);
    20     for(int i=1;i<=n+1;i++)
    21     fa[i]=i;
    22     int qwe=m;
    23     for(int i=1;i<=qwe;i++)
    24     {
    25         int x,y;
    26         scanf("%d%d",&x,&y);
    27         y++;
    28         int x1=findfather(x),x2=findfather(y);
    29         if(x1!=x2)
    30         fa[x2]=x1;
    31         else m--;
    32     }
    33     long long ans=1;
    34     for(int i=1;i<=m;i++)
    35     {
    36         ans*=2;
    37         if(ans>mod)
    38         ans-=mod;
    39     }
    40     printf("%I64d",ans);
    41     return 0;
    42 }
  • 相关阅读:
    此查询使用的不是 ANSI 外部联接运算符
    centos重启命令
    updatePanel 加载完成后回调JS
    建站推荐十个免费的CMS内容管理系统(Php+mysql)
    [转]最值得拥有的免费Bootstrap后台管理模板
    Got a packet bigger than 'max_allowed_packet' bytes”
    ECshop商城程序常见的96个小问题汇总
    linux 命令
    mysql 存储过程
    千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记
  • 原文地址:https://www.cnblogs.com/937337156Zhang/p/6017242.html
Copyright © 2011-2022 走看看