zoukankan      html  css  js  c++  java
  • 洛谷P2391 白雪皑皑(并查集)

    题目背景

    “柴门闻犬吠,风雪夜归人”,冬天,不期而至。千里冰封,万里雪飘。空中刮起了鸭毛大雪。雪花纷纷,降落人间。 美能量星球(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+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
    ",color[i]);
        return 0;
    }
  • 相关阅读:
    NET中的幕后英雄:MSCOREE.DLL (转载)
    【百度地图API】如何使用suggestion下拉列表方式的搜索建议
    经典收藏 50个jQuery Mobile开发技巧集萃
    深入理解Android消息处理系统——Looper、Handler、Thread
    Android GridView宫格视图(一) 运用BaseAdapter
    Toast和Handler的间隔使用
    android Toast大全(五种情形)建立属于你自己的Toast
    SQL 新特性 output
    通过Aspose.Cells.dll组件,实现多sheet导出Xls
    SQL 通过镜像数据库实现 故障自动切换
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/8687552.html
Copyright © 2011-2022 走看看