zoukankan
html css js c++ java
HDU3461 Code Lock 并查集应用
/* 这题程序不难,关键想法比较难,以下内容来自别人的空间 如果没有区间存在,答案是26^n,每增加一个区间,n-1(因为这个区间可以变成26种状态~). 但是要注意的是,比如已经有(1,10)和(1,3)在了,此时再增加(4,10)就没有作用了 使用并查集对于[l,r]我们将l,r+1两个点并起,如果新线段的两个点是同一个集合,就不用减了 */ #include <iostream> #include "UFS.h" #include <cmath> using namespace std; int mod = 1000000007; int exp(int a, int n); UFS ufs; int main() { int n,m, ans; while(cin>>n>>m) { ans = n; ufs.clear(); while(m--) { int a,b; cin>>a>>b; if(ufs.Find(a) != ufs.Find(b+1)) { ufs.Union(a, b+1); ans--; } } cout<<exp(26, ans)<<endl; } return 0; } //非递归求幂 int exp(int a, int n) { __int64 temp1 = 1, temp2 = a; while(n) { if(n & 1) temp1 =( temp1 * temp2 ) % mod; n>>=1; temp2 =( temp2 * temp2 ) % mod; } return temp1; }
查看全文
相关阅读:
练习1-17 编写一个程序,打印长度大于80个字符的所有输入行.
练习1-16 修改打印最长文本行的程序的主程序main, 使之可以打印任意长度的输入行的长度, 并尽可能多的打印文本。
惠普Z620工作站用安装版装win7旗舰版64位结果找不到硬盘
输入元素( Input Element)
GradientStop
qml关键字style
opacity
QT5-step-by-step-LayoutManagement
QT5-step-by-step-BasicKnowledge
Adeneo Embedded: Building Qt 5.1 for Freescale i.MX6Introduction on LTIB
原文地址:https://www.cnblogs.com/windmissing/p/2559863.html
最新文章
iOS RunLoop面试题
UItableVIew初探
导航控制器和自定义导航控制器
iOS 网络监测
已有项目 iPhoneX 适配
Mac Apache
HTTPS 进阶
保护网络传输的实现
SQLite 加密 -- SQLCipher
iOS9 适配(杂七杂八)
热门文章
Swift 语法篇
关于 Pragma 的使用总结
SSD Trim Support -- 保护 SSD
Objc Block
练习2-2 在不使用运算符&&或者||的条件下编写一个与上面的for循环语句等价的循环语句。
练习2-1 编写一个程序一确定分别由signed及unsigned限定的char,short,int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现。通过直接计算来确定浮点类型的取值范围是一项难度很大的任务。
练习1-22 编写一个程序,把较长的输入行折成短一些的两行或者多行,折行的位置在输入行的第N列之前的最后一个非空格之后。要保持程序能够智能地处理输入行很长以及在制定的列前没有空格或者制表符时的情况。
练习1-21 编写程序entab,将空格串替换成最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪种替换字符比较好。
练习1-20:请编写程序detab,将输入中的制表符替换成适当数目的空格,适空格充满到下一个制表符中止的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该作为变量还是符号常量呢?
练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行
Copyright © 2011-2022 走看看