洛谷P2391 白雪皑皑(并查集)
2018-06-17 20:53:55来源:未知 阅读 ()
题目背景
“柴门闻犬吠,风雪夜归人”,冬天,不期而至。千里冰封,万里雪飘。空中刮起了鸭毛大雪。雪花纷纷,降落人间。 美能量星球(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
输入输出样例
4 3 2 4
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+10; const int INF=1e9+10; //char buf[1<<20],*p1=buf,*p2=buf; inline int read() { char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';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=1;i<=N+1;i++) fa[i]=i; for(int i=M;i>=1;i--) { int l=(i*p+q)%N+1,r=(i*q+p)%N+1; if(l>r) swap(l,r); for(int j=find(l);j<=r;j=find(j+1)) color[j]=i,fa[j]=j+1; } for(int i=1;i<=N;i++) printf("%d\n",color[i]); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 洛谷P1164->小A点菜 2020-05-18
- 洛谷P1907口算练习题 2020-03-24
- 结题报告--P5551洛谷--Chino的树学 2020-03-13
- 结题报告--洛谷P3915 2020-03-13
- 洛谷P1034 矩形覆盖 2020-03-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash