题意描述:有一个类似滚轮式的密码锁放在一排共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. 清北考前刷题da7下午好

    三向城 /* 原图一定是一棵完全二叉树. 根节点是x,左节点是x*2,右节点是x*2+1 转化为二进制往左右走就很明显了. */ #include<iostream> #include&l ...

  2. 微信公众号 sign类

    微信公众号 Sign import java.util.UUID; import java.util.Map; import java.util.HashMap; import java.util.F ...

  3. Spring加载applicationContext.xml实现spring容器管理的几种方式

    package com.etc.test; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; i ...

  4. 高性能队列disruptor为什么这么快?

    背景 Disruptor是LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级).基于Disruptor开发的系统单线程能支撑每秒600万 ...

  5. CF811C Vladik and Memorable Trip

    思路: 令dp[i]表示前i个的最大舒适度.则如果区间[j, i](1 < j <= i)满足条件,有如下转移:dp[i] = max(dp[i], dp[j - 1] + cur).其中 ...

  6. 学习笔记 第五章 使用CSS美化网页文本

    第五章   使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...

  7. JavaScript(十二)事件

    Dom事件 1.DOM0级事件 on事件 只能 监听冒泡阶段 切只能绑定一个事件 dom.onclick = function(){}; 2.Dom2级事件 可以绑定多次事件    可以通过设置fla ...

  8. Unity笔记(2)自学第一天

    学习记录: 界面使用:

  9. Table标题行冻结,数据行滚动的一种方式

    这段时间在做Table标题行冻结,数据行滚动,虽然能实现,但也遇到一些问题,记录下来. 首先说说实现,实现其实不难,估计很多人都能想象出来,那就是标题行与内容行分离.我是这么做的,用两个表格,一个只有 ...

  10. 创建密码带有特殊字符的dblink

    使用的是data studio,所以末尾不加分号 create database link link_to_143 connect " using '(DESCRIPTION = (ADDR ...