hdu3461
题意描述:有一个类似滚轮式的密码锁放在一排共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的更多相关文章
- Code Lock[HDU3461]
Code LockTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- 【uva12232/hdu3461】带权并查集维护异或值
题意: 对于n个数a[0]~a[n-1],但你不知道它们的值,通过逐步提供给你的信息,你的任务是根据这些信息回答问题: I P V :告诉你a[P] = V I P Q V:告诉你a[P] XOR a ...
- hdu3461 Code Lock
Problem Description A lock you use has a code system to be opened instead of a key. The lock contain ...
- hdu 3038 How Many Answers Are Wrong(种类并查集)2009 Multi-University Training Contest 13
了解了种类并查集,同时还知道了一个小技巧,这道题就比较容易了. 其实这是我碰到的第一道种类并查集,实在不会,只好看着别人的代码写.最后半懂不懂的写完了.然后又和别人的代码进行比较,还是不懂,但还是交了 ...
随机推荐
- tp5增加验证的自定义规则
- c语言 error C4996: 'strupr': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name
问题: 在使用visual studio 2013,进行调试执行代码时,出现如下错误: error C4996: 'strupr': The POSIX name for this item is d ...
- hdu1166 敌兵布阵(树状数组)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- php pdo oracle
<?php/** * Created by mestars. * User: mestars * Date: 6/13/16 * Time: 10:52 PM */header('Access- ...
- 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较
1.流式套接字 使用这种套接字时,数据在客户端是顺序发送的,并且到达的顺序是一致的.比如你在客户端先发送1,再发送2,那么在服务器端的接收顺序是先接收到1,再接收到2,流式套接字是可靠的,是面向连接的 ...
- SQL在一张表中根据父ID获取所有的子ID
with a as ( select id,name,parentid from categories where id=53 union all select x.id,x.name,x.paren ...
- Spring Boot (31) 数据验证
曾经参数的验证是这样的: public String test(User user){ if(user == null){ throw new NullPointerException("u ...
- NX自动出图 效果图
- RPC——笔记
整理的笔记来源:https://mp.weixin.qq.com/s/JkXrPcuKtE2qYgmDcH2uww RPC(远程过程调用): RPC是:一个计算机通信协议. 调用过程:计算机 A 上的 ...
- JS实现LOGO像雪花一样落下特效
<HTML><HEAD><TITLE>LOGO从上落下</TITLE> <SCRIPT language=JavaScript> //窗口改 ...