题目背景

“柴门闻犬吠,风雪夜归人”,冬天,不期而至。千里冰封,万里雪飘。空中刮起了鸭毛大雪。雪花纷纷,降落人间。 美能量星球(pty 在 spore 上的一个殖民地)上的人们被这美景所震撼。但是 pty 却不高兴,他不喜欢白色的世界,他觉得这样太单调了。所以他想对雪花进行染色,让世界变得多彩些。

题目描述

现在有 N 片雪花排成一列。 Pty 要对雪花进行 M 次染色操作,第 i次染色操作中,把第(i*p+q)%N+1 片雪花和第(i*q+p)%N+1 片雪花之间的雪花(包括端点)染成颜色 i。其中 p,q 是给定的两个正整数。他想知道最后 N 片雪花被染成了什么颜色。

输入输出格式

输入格式:

包含 4 行:

N M p q 意义如题中所述。

输出格式:

包含 N 行:

第 i 行表示第 i 片雪花被染成的颜色 c

输入输出样例

输入样例#1: 复制

4
3
2
4
输出样例#1: 复制

2
2
3
0

说明

20%的数据满足:1<=n,m<=1000

40%的数据满足:1<=n<=8000,1<=m<=1000000

80%的数据满足:1<=n<=500000,1<=m<=10000000

100%的数据满足:1<=n<=1000000,1<=m<=10000000

保证 1<=M*p+q,M*q+p<=2*10^9

并查集维护染色问题经典题目

倒序处理

// luogu-judger-enable-o2
// luogu-judger-enable-o2
#include<bits/stdc++.h>
//#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
using namespace std;
const int MAXN=1e6+;
const int INF=1e9+;
//char buf[1<<20],*p1=buf,*p2=buf;
inline int read()
{
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int color[MAXN];
int fa[MAXN];
int find(int x)
{
if(fa[x]==x) return fa[x];
else return fa[x]=find(fa[x]);
}
int main()
{
#ifdef WIN32
freopen("a.in","r",stdin);
#else
#endif
int N=read(),M=read(),p=read(),q=read();
for(int i=;i<=N+;i++) fa[i]=i;
for(int i=M;i>=;i--)
{
int l=(i*p+q)%N+,r=(i*q+p)%N+;
if(l>r) swap(l,r);
for(int j=find(l);j<=r;j=find(j+))
color[j]=i,fa[j]=j+;
}
for(int i=;i<=N;i++)
printf("%d\n",color[i]);
return ;
}

洛谷P2391 白雪皑皑(并查集)的更多相关文章

  1. 洛谷 P2391.白雪皑皑 (并查集,思维)

    题意:有\(n\)个点,对这些点进行\(m\)次染色,第\(i\)次染色会把区间\((i*p+q)\ mod\ N+1\)和\((i*q+p)\ mod\ N+1\)之间的点染成颜色\(i\),问最后 ...

  2. 洛谷P3295 萌萌哒 并查集 + ST表

    又切一道紫题!!! 成功的(看了一吨题解之后),我A掉了第二道紫题. 好,我们仔细观察,发现这是一个排列组合问题. 有些限定条件,要相等的地方,我们就用并查集并起来.最后一查有多少个并查集,就有多少个 ...

  3. 洛谷P4092树——并查集

    题目:https://www.luogu.org/problemnew/show/P4092 利用并查集,倒序离线,那么从倒序来看被撤销标记的点就再也不会被标记,所以用并查集跳过: 莫名其妙的WA,调 ...

  4. 洛谷P3958 奶酪 并查集

    两个空洞可互达当且仅当两个空洞相切,即球心距离小于等于球的直径. 一一枚举两个可互达的空洞,并用并查集连起来即可. Code: #include<cstdio> #include<c ...

  5. 洛谷 P3958 奶酪 并查集

    目录 题面 题目链接 题面 题目描述 输入输出格式 输入格式 输出格式: 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P3958 奶酪 题面 题目描述 现有一块大奶酪 ...

  6. 洛谷 P2391 白雪皑皑 线段树+优化

    题目描述: 现在有 \(N\) 片雪花排成一列. Pty 要对雪花进行$ M $次染色操作,第 \(i\)次染色操作中,把\((i*p+q)%N+1\) 片雪花和第\((i*q+p)%N+1\)片雪花 ...

  7. 洛谷P2024食物链——并查集补集的灵活运用

    题目:https://www.luogu.org/problemnew/show/P2024 自己在做本题时最大的障碍就是:不会在一个集合的father改变时把相应的补集也跟着改变. 借鉴题解后,才明 ...

  8. 洛谷P2432 zxbsmk爱查错

    题目 DP,需要注意边界上的问题. 状态定义\(dp[i]\)为句子第i位去除字母的最小值,答案就是\(dp[len]\). 易得状态转移方程为: \[dp[i]=min(dp[i-1]+1,dp[l ...

  9. JZOJ5966【NOIP2018提高组D2T3】保卫王国(并查集)

    题目 还是懒得把题目放上来了. 大意:给你一棵带点权的树,你要花费一些代价选择一些点使得相邻的两个点至少有一个被选. 然后有很多个询问,每个询问强制两个点的状态,问强制了这两个点的状态后的方案. 比赛 ...

随机推荐

  1. Jquery常见操作多选框/复选框/checkbox

    1.判断checkbox是否为选中状态: if($("#searchNews").attr("checked")=="checked") { ...

  2. 11.6 【Linq】分组和延续

    11.6.1 使用 group...by 子句进行分组 class Program { static void Main(string[] args) { var query = from defec ...

  3. Git 基础教程 之 添加、提交

    一, 编写一个名为readme.txt文件,放入pythonwork目录下 ①   手动新建 ②   使用命令: a. touch readme.txt   b. vim readme.txt PS: ...

  4. VS2015 建立一个C++的MFC简易窗体程序项目

    一开始建立的窗体工程都是带很多窗口,而且自己拉到窗体的控件,一调试就看不到了,是因为新建立工程项目时勾选了太多其他的了,这里记录分享一下建立一个单纯的窗体程序项目步骤给有需要的人也可以学习. 第一步: ...

  5. LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)

    很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求 ...

  6. JVM学习-jvm结构(一)

    java是跨平台的语言.一次编译多端使用.究竟是如何实现的呢 1.首先编译器会将java 文件编译成class文件.然后在不同的平台使用对应的虚拟机.不同虚拟机的内装载系统将class文件转换平台能执 ...

  7. FZU - 2062 - Suneast & Yayamao

    先上题目: Problem 2062 Suneast & Yayamao Accept: 146    Submit: 319Time Limit: 1000 mSec    Memory L ...

  8. CentOS6.3安装Mysql-5.5.29

    转自:http://www.cnblogs.com/zhoulf/archive/2013/01/25/zhoulf.html 安装方式分为rpm和源码编译安装两种,本文是采用mysql源码编译方式, ...

  9. nyoj-664-数字整除(水题)

    数字整除 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍.当且仅当差是17的倍数时.原数也是 ...

  10. Tomcat扩展——监控

    (转过来,源地址:http://www.jmatrix.org/notes/1067.html) 近期心血来潮.想能否够通过添加一个tomcat的扩展,来持续收集tomcatserver本身的性能信息 ...