题解

这个题好妙啊
首先我们发现,如果我们可以暴力,就是把相同的元素拿并查集合起来,最后统计集合个数\(cnt\)
答案是\(9\*10^{cnt - 1}\)
然而我们做不到= =
我们可以用倍增的思想,类似st表,一次合并两个长度为\(2^l\)的区间
然后再从区间长度最长往下下放,从长到短遍历,就下放一层,之后会继续遍历到这层然后下放
最后统计集合个数,复杂度是\(O(n \log n)\)的

代码

#include <bits/stdc++.h>
//#define ivorysi
#define MAXN 100005
typedef long long int64;
typedef unsigned int u32;
using namespace std;
const int MOD = 1000000007;
int fa[MAXN * 25];
int st[MAXN][20],cnt = 0;
int log_2[MAXN],n,m;
int lc[MAXN * 25],rc[MAXN * 25];
int getfa(int x) {return x == fa[x] ? x : fa[x] = getfa(fa[x]);}
void merge(int x,int y) {if(getfa(x) == getfa(y)) return;fa[getfa(x)] = getfa(y);
}
void Init() {scanf("%d%d",&n,&m);for(int i = 2 ; i <= n ; ++i) log_2[i] = log_2[i / 2] + 1;for(int j = log_2[n] ; j >= 0 ; --j) {for(int i = 1 ; i + (1 << j) - 1 <= n ; ++i) {st[i][j] = ++cnt;fa[cnt] = cnt;}}for(int j = 1 ; j <= log_2[n] ; ++j) {for(int i = 1 ; i + (1 << j) - 1 <= n ; ++i) {lc[st[i][j]] = st[i][j - 1];rc[st[i][j]] = st[i + (1 << j - 1)][j - 1];}}
}
void Solve() {int s1,e1,s2,e2;while(m--) {scanf("%d%d%d%d",&s1,&e1,&s2,&e2);int l = log_2[e1 - s1 + 1];merge(st[s1][l],st[s2][l]);merge(st[e1 - (1 << l) + 1][l],st[e2 - (1 << l) + 1][l]);}for(int j = 1; j <= cnt; ++j) {if(!lc[j] || !rc[j]) continue;int t;if((t = getfa(j)) != j) {merge(lc[j],lc[t]);merge(rc[j],rc[t]);}}int sum = 0;for(int i = 1 ; i <= n ; ++i) {if(getfa(st[i][0]) == st[i][0]) ++sum;}int64 ans = 9;for(int i = 1 ; i < sum ; ++i) ans = ans * 10 % MOD;printf("%lld\n",ans);
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifInit();Solve();
}

转载于:https://www.cnblogs.com/ivorysi/p/9155831.html

【LOJ】#2014. 「SCOI2016」萌萌哒相关推荐

  1. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  2. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  3. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  4. loj#2143. 「SHOI2017」组合数问题

    loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西. ∑i=0n(nkik+r)=∑i=0n(nki)[i≡r(modk)]\sum_{i=0} ...

  5. LOJ#2542. 「PKUWC2018」随机游走

    LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...

  6. LOJ#2145. 「SHOI2017」分手是祝愿

    LOJ#2145. 「SHOI2017」分手是祝愿 题目描述 Solution 首先有一个结论: 灯的状态序列a1,a2...ana_1,a_2...a_na1​,a2​...an​唯一对应了一个最优 ...

  7. Loj #2568. 「APIO2016」烟花表演

    Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...

  8. Loj #2585. 「APIO2018」新家

    Loj #2585. 「APIO2018」新家 题目描述 五福街是一条笔直的道路,这条道路可以看成一个数轴,街上每个建筑物的坐标都可以用一个整数来表示.小明是一位时光旅行者,他知道在这条街上,在过去现 ...

  9. Loj #2983. 「WC2019」数树

    Loj #2983. 「WC2019」数树 题目背景 白兔喜欢树. 白云喜欢数数. 有 \(n\) 只鼠,白兔用 \(n − 1\) 根蓝色绳子把它们连成了一棵树,每根蓝色绳子连着两只鼠,白云用 \( ...

最新文章

  1. boot项目中pom依赖已经删除了但是maven上还是报红线_Java Web项目是怎么跑起来的?...
  2. Vue-admin工作整理(四):路由组件传参
  3. SDNU 1474.特殊回文数(水题)
  4. micropython做中继_MicroPython网络服务器使用ESP32/ESP8266远程控制家用交流电器
  5. 这个太有意思了,程序员可以消遣娱乐
  6. JavaScript 函数节流 throttle 和防抖 debounce
  7. 【转】硬盘的寻址和工作模式
  8. hbase客户端_好文推荐:全网最细致的 HBase 内核解析
  9. Spring包的依赖关系以及提供下载
  10. 一个盒子相对于另一盒子垂直居中的方法
  11. Spark SQL面试题
  12. 首次适应算法 动态分区分配方式的模拟 C语言——课程设计实习
  13. 三消游戏(检查游戏是否死局)
  14. java 标点符号_java的标点符号
  15. 数字内容产业的产业链结构
  16. python实现将pdf转为高质量图片
  17. 图片情感分析(1):图像数据预处理
  18. 德鲁伊(Druid)后台监控配置详细操作。生产环境定位问题方法
  19. matlab 没有sym函数,错误使用== fprintf函数没有为'sym'输入定义
  20. OpenGl太阳地球月亮运动系统

热门文章

  1. SQL中的left outer join,inner join,right outer join用法
  2. 3.10以上charles版本抓取Https数据包
  3. Dos批处理中符号作用大全
  4. 理清 WebSocket 和 HTTP 的关系
  5. Cloud Native未来值得关注的方向:Service Mesh简介
  6. 到底是Java好还是Python好?
  7. 牛逼哄哄的 RPC 框架,底层到底什么原理?
  8. 深入理解Java:注解(Annotation)基本概念
  9. 操作系统:操作系统知识点总结
  10. Spring Boot切换其他嵌入式的Servlet容器