题意描述:有一个类似滚轮式的密码锁放在一排共n个,有m种操作每次操作一个区间,且此次操作后的所有密码相同,问最多能形成多少种密码

解决:将区间分为可变部分和不可变部分,没当有可变部分时候总区间数要减去一。因为在可变 区间内第一个滚轮一定是固定的(可以转)

并查集合并区间后做下快速幂就好了 1 //组合数学+快速幂+并查集

 2 //统一区间内的组合数指数在原先基础上要减去1
 3 //证明可以枚举开始的字母因为是循环的所以第一个字母唯一
 4 //注意边界重叠的情况,初始化要从0开始
 5 
 6 #include<cstring>
 7 #include<cstdio>
 8 #include<algorithm>
 9 typedef long long ll;
 using namespace std;
 const int MAX = +;
 const int MOD = ;
 int pa[MAX];
 void make(int n)
 {
     for(int i=;i<=n;i++) pa[i]=i;
 }
 int find(int x)
 {
     return pa[x]==x? x: pa[x]=find(pa[x]);
 }
 int Union(int a,int b)
 {
     int fx=find(a);
     int fy=find(b);
     if(fx==fy) return ;
     else
     {
         pa[fx]=fy;
         return ;
     }
 }
 ll qmod(ll a,ll n)
 {
     ll res=;
     while(n>)
     {
         if(n&) res=res*a%MOD;
         a=a*a%MOD;
         n>>=;
     }
     return res;
 }
 int main()
 {
     int n,m,l,r;
     while(scanf("%d %d",&n,&m)>)
     {
         make(n); int cnt=;
         for(int i=;i<m;i++)
         {
             scanf("%d %d",&l,&r);
             if(Union(l-,r)) cnt++;
         }
         ll ans=qmod(,(ll)(n-cnt));
         printf("%I64d\n",ans%MOD);
     }
     return ;
 }

hdu3461的更多相关文章

  1. Code Lock[HDU3461]

    Code LockTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...

  2. 【uva12232/hdu3461】带权并查集维护异或值

    题意: 对于n个数a[0]~a[n-1],但你不知道它们的值,通过逐步提供给你的信息,你的任务是根据这些信息回答问题: I P V :告诉你a[P] = V I P Q V:告诉你a[P] XOR a ...

  3. hdu3461 Code Lock

    Problem Description A lock you use has a code system to be opened instead of a key. The lock contain ...

  4. hdu 3038 How Many Answers Are Wrong(种类并查集)2009 Multi-University Training Contest 13

    了解了种类并查集,同时还知道了一个小技巧,这道题就比较容易了. 其实这是我碰到的第一道种类并查集,实在不会,只好看着别人的代码写.最后半懂不懂的写完了.然后又和别人的代码进行比较,还是不懂,但还是交了 ...

随机推荐

  1. linux下jdk环境变量配置深度分析----解决环境变量不生效的问题

    1.linux下jdk环境变量配置 是否需要配置环境变量,主要看java -version 显示的版本是否为你期望的版本 1.1 不需要配置环境变量的情况 使用java -version查看,版本显示 ...

  2. 页面置换算法-LRU(Least Recently Used)c++实现

    最近最久未使用(LRU)置换算法 #include <iostream> #include <cstdio> #include <cstring> #include ...

  3. Python的I/O操作

    1.读取键盘输入 msg = raw_input("Please enter :") print "you input ",msg #可接受Python表达式作 ...

  4. 关于sql的case when用法简述

    刚入手公司项目,需要添加一个功能,用到了SQL的case when以及concat SELECT eve.cc, eve.sc, case concat(cc,sc) ' THEN '' ' THEN ...

  5. Python安装笔记

    1.教程

  6. JDBC性能优化

    一.使用PreparedStatement的Batch功能 参见本人一下文章:http://blog.csdn.net/lmb55/article/details/50631062 二.选择合适的光标 ...

  7. linux nohup & 简单使用

    线上通常nohup配合&启动程序,同时免疫SIGINT和SIGHUP信号,从而保证程序在后台稳定运行 & 1.后台运行,输出默认到屏幕 2.免疫SIGINT信号,比如Ctrl+c不会杀 ...

  8. 再谈布局之 UIStackView

    UIStackView 是 iOS9 新增的一个布局技术.熟练掌握相当节省布局时间. UIStackView 是 UIView 的子类,是用来约束子控件的一个控件.但他的作用仅限于此,他不能被渲染(即 ...

  9. C++写注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  10. 413 Request Entity Too Large报错处理

    修改nginx配置   这是最简单的一个做法,着报错原因是nginx不允许上传配置过大的文件,那么件把nginx的上传大小配置调高就好.    1.打开nginx主配置文件nginx.conf,一般在 ...