bzoj 2054 疯狂的馒头
2015-11-16 10:40
267 查看
想到了要用一种东西维护下一个没被染色的是什么东西,但是没想到是并查集。这道题就相当于在每一个集合里的数都会跳到一个相同的点,就相当于并查集的代表元素。如果将一个点染色,就把它的父亲设为i+1,这样并查集的代表元素就是下一个没有被染色的点。
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #define ll long long #define inf 1e9 #define eps 1e-10 #define md #define N 1000010 using namespace std; int fa ,col ; int find(int x) { return fa[x]==x?x:fa[x]=find(fa[x]);} int main() { ll n,m,p,q; scanf("%lld%lld%lld%lld",&n,&m,&p,&q); for (int i=1;i<=n+1;i++) fa[i]=i; for (int i=m;i;i--) { int l=(i*p+q)%n+1,r=(i*q+p)%n+1; if (l>r) swap(l,r); for (int x=find(l);x<=r;x=find(x)) { col[x]=i; fa[x]=x+1; } } for (int i=1;i<=n;i++) printf("%d\n",col[i]); return 0; }
相关文章推荐
- bzoj 2121 字符串游戏
- bzoj 1049 数字序列
- bzoj 2669 局部极小值
- bzoj 3743 kmap
- dp专题训练
- bzoj 1060 时态同步 水题?神题?
- 练贪心!贪心!贪心!
- bzoj 3175 攻击装置 | 二分图最大独立集
- 图解javascript this指向什么?
- 远程控制电脑
- Linux Basics command
- java http 请求方法
- .ajax设置成同步的应用场景
- java泛型编程
- linux下apache2两种工作模式及两者切换
- bzoj 3032 七夕祭 | 中位数
- bzoj 2594 水管局长 | LCT | 最小生成树
- bzoj 3706 反色刷 | 一笔画
- bzoj 3108 图的逆变换
- bzoj 2660 最多的方案 | 斐波那契数列