洛谷 P2391 白雪皑皑(并查集)
来源:互联网 发布:大数据公司有哪些设备 编辑:程序博客网 时间:2024/06/05 16:09
传送门
这个题真的很神奇。
数据10000000,所以肯定是线性做法,然后我就不会了,一看题解,并查集,看完了之后,发现真的很巧妙,就是像一个链表一样用并查集。
copy一段:
这道题可以用并查集来打(然而我一开始脑抽竟然用了双向链表-.-),从最后开始往前进行涂色,因为显然后面的优先级大于前面,后面的会将前面涂的颜色覆盖。这样我们只要快速查找下一个没被涂的点就行了,因此我想到了并查集,只要保证每个集合的fa没被涂过就行了。这样就避免了复杂度过高。
我的代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#include<vector>#include<queue>#define ll long longusing namespace std;int n,m,p,q;int a[1000101];int fa[1000101];int find(int x){return (fa[x]<0)?x:fa[x]=find(fa[x]);}int main(){ scanf("%d %d %d %d",&n,&m,&p,&q); memset(fa,-1,sizeof(fa)); for(int i=m;i>=1;i--){ int l=(i*p+q)%n+1; int r=(i*q+p)%n+1; if(r<l)swap(r,l); l=find(l); while(l<=r){ a[l]=i; fa[l]=l+1; l=find(l+1); } } for(int i=1;i<=n;i++){ printf("%d\n",a[i]); } return 0;}
阅读全文
0 0
- 洛谷 P2391 白雪皑皑(并查集)
- 并查集(集并查)
- 并查集(含关系并查集)
- 【并查集】食物链(关系并查集)
- 【并查集】并查集详解(转)
- 分组并查集(种类并查集)
- 并查集, 畅通工程(简单并查集)
- 洛谷 并查集 食物链
- 洛谷 并查集 星球大战.
- 洛谷 [模板]并查集
- [数据结构]并查集水体POJ2236(并查集)
- 并查集(disjoint_set)
- 并查集(模板)
- 并查集(亲戚)
- POJ2524(并查集)
- POJ_2236(并查集)
- poj2492(并查集)
- HDU1272(并查集)
- Java5
- 方阵
- 数据链路层的三个基本问题
- bzoj 1674: [Usaco2005]Part Acquisition(最短路)
- 深度学习中的激活函数与梯度消失
- 洛谷 P2391 白雪皑皑(并查集)
- 上传本地项目到码云
- 安卓图像更新学习总结
- bzoj3304[Shoi2005]带限制的最长公共子序列 DP
- C++对于C的强化
- vue 如何给每个页面添加一个全局的className
- Python--matplotlib绘图可视化知识点整理
- javaEE+tomcat+mySql实现服务端http接口
- C++ const用法 尽可能使用const