BZOJ 4569 [Scoi2016]萌萌哒
来源:互联网 发布:模拟软件下载 编辑:程序博客网 时间:2024/05/21 14:43
ST表(倍增)+并查集
一个直观的想法是把
实际上我们是在进行区间操作,那我们考虑直接对区间进行维护。用ST表,记
两段区间合并,实际上可以转化为两个ST表上区间的合并,用并查集维护这个过程。合并即可降为每次
考虑标记下传,若两个区间
写下这篇文章时访问量为9972,什么时候破万呢???^v^
#include<cstdio>#define N 300005#define H 18#define MOD 1000000007using namespace std;namespace runzhe2000{ int f[N*H], log[N], num, id[N][H], beg[N*H]; long long ans=1; bool vis[N*H]; void add(){ans==1?ans*=9:ans*=10; ans %= MOD;} int find(int x){return f[x] == x ? x : f[x] = find(f[x]); } void unio(int x, int y) { f[find(x)] = find(y); } void main() { int n, m; scanf("%d%d",&n,&m); if(n == 1){puts("10"); return;} for(int i = 1; i <= n; i++) for(int j = H-1; j >= 0; j--) { id[i][j] = ++num; beg[num] = i; f[num] = num; } for(int i = 2; i <= n; i++) log[i] = log[i>>1] + 1; for(int i = 1; i <= m; i++) { int l1, r1, l2, r2; scanf("%d%d%d%d",&l1,&r1,&l2,&r2); int len = r1 - l1 + 1; unio(id[l1][log[len]], id[l2][log[len]]); unio(id[r1-(1<<log[len])+1][log[len]], id[r2-(1<<log[len])+1][log[len]]); } for(int j = H-1; j; j--) for(int i = 1; i <= n; i++) { int f = find(id[i][j]); unio(id[beg[id[i][j]]][j-1], id[beg[f]][j-1]); unio(id[beg[id[i][j]]+(1<<(j-1))][j-1], id[beg[f]+(1<<(j-1))][j-1]); } for(int i = 1; i <= n; i++) { int fi = find(id[i][0]); if(!vis[fi]) add(), vis[fi] = 1; } printf("%lld\n",ans); }}int main(){ runzhe2000::main();}
0 0
- bzoj 4569: [Scoi2016]萌萌哒
- BZOJ 4569: [Scoi2016]萌萌哒
- BZOJ 4569 [Scoi2016]萌萌哒
- BZOJ 4569: [Scoi2016]萌萌哒
- BZOJ 4569 [Scoi2016]萌萌哒
- BZOJ 4569 [Scoi2016] 萌萌哒
- BZOJ 4569: [Scoi2016]萌萌哒
- bzoj 4569: [Scoi2016]萌萌哒
- 【bzoj 4569】[Scoi2016]萌萌哒 (并查集)
- [BZOJ]4569 [SCOI2016] 萌萌哒 并查集神题
- BZOJ 4569: [Scoi2016]萌萌哒【倍增并查集
- bzoj 4569: [Scoi2016]萌萌哒 (st表+并查集)
- bzoj 4569: [Scoi2016]萌萌哒 ST表+并查集
- BZOJ 4569: [Scoi2016]萌萌哒 ST表 并查集
- BZOJ 4569: [Scoi2016]萌萌哒 并查集+倍增
- BZOJ 4569: [Scoi2016]萌萌哒 倍增思维并查集
- 4569: [Scoi2016]萌萌哒
- bzoj 4571: [Scoi2016]美味
- 有多少面试可以重来
- git学习心得(一)——如何关联本地库和远程
- 秒杀多线程系列
- maven fastdfs_client.jar找不到问题解决
- Nginx关于连接超时配置的实验
- BZOJ 4569 [Scoi2016]萌萌哒
- ArrayList,LinkedList使用场景及性能说明
- html 文字乱码 (日本語 文字化け)
- 中断与异常的区别
- CDQZ 高新2016级ACM模拟赛No.001考后总结
- Java的参数传递有值传递和引用传递
- eclipse gradle buildship 执行build任务提示Could not find tools.jar
- Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
- 剑指offer-二维数组中的查找