www.cnblogs.com/shaokele/


bzoj2054:疯狂的馒头

  Time Limit: 10 Sec
  Memory Limit: 162 MB

Description

  
 

Input

  第一行四个正整数N,M,p,q
 

Output

  一共输出N行,第i行表示第i个馒头的最终颜色(如果最终颜色是白色就输出0)。
 

Sample Input

  4 3 2 4
 

Sample Output

  2
  2
  3
  0
  

HINT

  
  

题目地址:  bzoj2054:疯狂的馒头

题目大意:   题目很简洁了:)

  

题解:

  并查集巧用
  因为颜色是覆盖上去的
  所以我们只要考虑最后一次染了什么颜色就可以了
  倒着做上来
  对于一个染色的区间 \(l,r\) ,我们只要将 \(l\) 指向 \(r+1\) 就好了,类似链表的操作
  用并查集维护操作
  
  本地测要加栈 或者 用非递归并查集
  不然无限RE
  数据下载[data](https://files.cnblogs.com/files/shaokele/2054.zip)
  


AC代码

#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1e6+5;
int n,m,p,q,l,r,sum;
int fa[N],ans[N];
int find(int x){int p=x;while(p!=fa[p])p=fa[p];while(x!=p){int tmp=fa[x];fa[x]=p;x=tmp;}return x;
}
int main(){scanf("%d%d%d%d",&n,&m,&p,&q);for(int i=1;i<=n+1;i++)fa[i]=i;for(int i=m;i>=1;i--){l=(1ll*i*p+q)%n+1;r=(1ll*i*q+p)%n+1;if(l>r)swap(l,r);for(int k=find(l);k<=r;k=find(k)){ans[k]=i;fa[k]=k+1;sum++;if(sum==n)break;}if(sum==n)break;}for(int i=1;i<=n;i++)printf("%d\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/shaokele/p/9114804.html

bzoj2054疯狂的馒头(巧用非递归并查集)相关推荐

  1. [L氏并查集] Python 列表法实现非递归并查集,轻松权重优化。

    一般的并查集都是用递归或者新建一个类来实现,这里介绍一种用Python来实现的非递归非函数并查集,这个方法暂时未在其他地方见过,尤其是中文领域目前还未见过,很可能是搜索引擎无法搜索到正确内容的原因,所 ...

  2. BZOJ2054疯狂的馒头

    2054: 疯狂的馒头 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 634 Solved: 250 Description Input 第一行四个正 ...

  3. BZOJ2054 疯狂的馒头 并查集

    2054: 疯狂的馒头 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 974 Solved: 423 [Submit][Status][Discuss ...

  4. bzoj2054 疯狂的馒头

    bzoj上现在找不到这题,所以目前只是过了样例,没有测 2054: 疯狂的馒头 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 715  Solved ...

  5. BZOJ2054: 疯狂的馒头(并查集)

    题意 题目链接 Sol 直接倒着并查集一波就行了 #include<bits/stdc++.h> // #define int long long using namespace std; ...

  6. acwing 3115 bzoj2054 疯狂的馒头

    https://www.acwing.com/problem/content/3118/ 做法:并查集 逆序枚举,因为最后染色的就是最后的颜色. find(f[i])表示为右边第一个没有被染色的点,通 ...

  7. 【数据结构与算法】非森林版并查集V2.1的Java实现

    非森林版查集 并查集V1.1不使用联合启发式或路径压缩算法,新版本采用同样的基本思路,但使用了按等级和路径压缩的并集. 核心功能 void union(root1, root2) → Merge tw ...

  8. 疯狂的馒头(bzoj2054)

    问题 G: 疯狂的馒头(bzoj2054) 时间限制: 1 Sec 内存限制: 128 MB 提交: 93 解决: 26 [提交][状态] 题目描述 输入 第一行四个正整数N,M,p,q 输出 一共输 ...

  9. 【BZOJ2054】疯狂的馒头

    Description Input 第一行四个正整数N,M,p,q Output 一共输出N行,第i行表示第i个馒头的最终颜色(如果最终颜色是白色就输出0). Sample Input 4 3 2 4 ...

最新文章

  1. 第 21 章 System Utilities 配置工具
  2. Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决
  3. 信用经济中的经济因素
  4. 《Photoshop Lab修色圣典(修订版)》—第1课1.6节小河川流而过
  5. python采集修改原创_python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改...
  6. ImportError: /home/kzl/anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
  7. Drools 6.5 :入门程序
  8. es6二进制数组--基础
  9. C语言入栈算法,栈的入栈、出栈、获取栈顶的c语言算法
  10. strace ltrace使用
  11. 功能安全-26262-理论到实践-基础知识-基于可靠性理论的的SIL与基于系统理论的STAMP
  12. NI-9253 C系列电流输入模块-9253
  13. 「手绘控笔技巧」最有效的控笔练习,让你少走很多弯路
  14. python 元类理解
  15. ubuntu 网卡流量_Ubuntu下使用nload查看网卡实时流量
  16. Linux 下du命令详解及代码实现
  17. 机器学习中火爆的对抗学习是什么,有哪些应用?
  18. NAMD靶向分子动力学模拟Target molecular dynamic stimulation(附conf文件)
  19. 马尔科夫随机场Markov Random Field
  20. 各个 .NET 平台的 UI 框架比较

热门文章

  1. 过程声明与同名事件或过程的描述不匹配_多特征结合的倾斜无人机影像匹配方法...
  2. java正则匹配英文句号_「正则表达式」王国奇遇记
  3. android怎么创建一个包命名空间,从Android的jar lib中声明命名空间
  4. 鸟哥linux私房菜 之 老段带你学习linux
  5. 基础练习 字母图形 c语言
  6. spark之4:基础指南(源自官方文档)
  7. Scala入门到精通——第十三节 高阶函数
  8. 自然语言处理-nltk学习(二)
  9. d3.js中选择元素和绑定数据
  10. Ctr点击率预估理论基础及项目实战