BZOJ


倒序处理,就是并查集傻题了。。

并查集就是确定下一个未染色位置的,直接跳到那个位置染。然而我越想越麻烦=-= 以为有线性的做法,发现还是要并查集。。

数据随机线段树也能过去。


//18400kb	2520ms
#include <cstdio>
#include <algorithm>
typedef long long LL;
const int N=1e6+5; int fa[N],col[N];
char OUT[N*10],*O=OUT; inline int Find(int x)
{
return x==fa[x]?x:fa[x]=Find(fa[x]);
}
inline void write(int x)
{
static char buf[10];
if(x)
{
int t=0;
while(x) buf[++t]=x%10+48, x/=10;
while(t) *O++=buf[t--];
}
else *O++='0';
} int main()
{
int n,m,p,q; scanf("%d%d%d%d",&n,&m,&p,&q);
for(int i=1; i<=n; ++i) fa[i]=i;
fa[n+1]=n+1;
for(int i=m; i; --i)
{
int l=(i*p+q)%n+1,r=(i*q+p)%n+1; l>r&&(std::swap(l,r),0);
for(int j=Find(l),ed=Find(r+1); j<=r; j=Find(j+1)) col[j]=i, fa[j]=ed;
}
for(int i=1; i<=n; ++i) write(col[i]), *O++='\n';
fwrite(OUT,1,O-OUT,stdout); return 0;
}

BZOJ.2054.疯狂的馒头(并查集)的更多相关文章

  1. Luogu P2391 白雪皑皑 && BZOJ 2054: 疯狂的馒头 并查集

    4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq...然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO.. ...

  2. 【BZOJ 2054】 2054: 疯狂的馒头 (并查集特技)

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

  3. Bzoj P2054 疯狂的馒头 | 并查集

    题目链接 思路:因为每次染色都会将某些馒头的颜色彻底更改,所以每个馒头的最终的颜色其实是由最后一次染色决定的,那么我们只考虑最后一次染色即可.对此,我们可以从后往前倒着染色,当目前的染色区间中存在白色 ...

  4. bzoj 2054: 疯狂的馒头(线段树||并查集)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2054 线段树写法: 点的颜色只取决于最后一次染的颜色,所以我们可以倒着维护,如果当前区间之前 ...

  5. BZOJ2054 疯狂的馒头 并查集

    题意:懒得写了有空再补上 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2054 离线从后往前做,并查集维护下一个没染色的就可以啦- #incl ...

  6. BZOJ 2054 疯狂的馒头

    并查集把染过色的并在一起.倒着染色. #include<iostream> #include<cstdio> #include<cstring> #include& ...

  7. 【BZOJ】2054: 疯狂的馒头

    [题意]给定n个元素,m次给一段区间染色为i,求最终颜色. [算法]并查集 [题解]因为一个点只受最后一次染色影响,所以倒过来每次将染色区间用并查集合并,父亲指向最右边的点. 细节: 1.fa[n+1 ...

  8. BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化

    LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...

  9. bzoj 2936 [Poi 1999] 降水 - 并查集

    题目传送门 需要root权限的传送门 题目大意 有一个$n\times m$的网格图,每一格都有一个高度.一次降雨过后问最多能积多少水. 考虑算每一高度能储存的水的量. 如果小于等于这个高度的格子和边 ...

随机推荐

  1. mix-blend-mode

    mix-blend-mode是一个css3新增的混合color与背景元素颜色的样式,同一个元素的两个颜色不影响. mix-blend-mode: normal;          //正常mix-bl ...

  2. design language

    design language https://en.wikipedia.org/wiki/Design_language 设计语言(设计词汇)是一种超架构的方案和风格, 它用于指导产品组件或者架构配 ...

  3. java构造方法的重载

    package test; public class Person { String name; int age; public Person() { System.out.println(" ...

  4. Java(13) 抽象和封装

    一.简述从现实世界中抽象出类的步骤 第一:找出分类(分析出类) 第二:找出类的特征(分析类的相关属性) 第三:找出类的行为(分析类的方法) 二.常量(经常出现的变量值) 2.1 语法: public ...

  5. 模块--random

    random模块 1       random.random() print(random.random()) 0-1 之间随机小数 不包含1 2       random.uniform(a,b) ...

  6. 解决select下拉框禁用(设置disabled属性),后台获取值为空

    如果下拉框设置disabled属性后,提交表单到后台,后台获取的下拉框的值为空,以下有三种解决获取不到下拉框选项值的方法. 有下拉框html如:<select name="select ...

  7. python 中的__new__方法

    1.有关__new__方法的介绍 __new__方法调用在构造方法构造实例之前,即在__init__方法执行之前,我们可以这样理解,他的作用是决定是否适用这个__iint__方法来构造实例,但是需要注 ...

  8. Linux 下的各种环境安装

    Linux 下的各种环境安装 1.安装 python Centos7  安装  python 2.7 : https://www.cnblogs.com/Jomini/p/10507077.html ...

  9. 只要三步,使用html5+js实现像素风头像生成器

    只要三步,使用html5+js实现像素风头像生成器 html5的画布给我们带来了很大的空间,其实像素风格头像生成器只是用到了画方块的方法.画一个像素头像,只要三步,1.解决像素点,2.解决像素点之间的 ...

  10. 【译】索引进阶(十三):SQL SERVER中的索引碎片【下篇】

    原文链接:传送门. 通用碎片模式 如果一个表具有多个索引,那么这些索引便具有多个索引键,因而也具有不同的顺序.通常情况下,这些索引中的一两个展示了之前描述过的升序插入模式,而其他的通常展示了随机插入模 ...