• bzoj1998: [Hnoi2010]Fsk物品调度


    链接......不知道为啥放不动啊。

    第一次用手机写bzoj的题,也是第一次用手机写的题解,顺便实现了一下手机上的对拍。

    可以用链表+并查集维护一下什么的。

    环之间的边是不是不太好路径压缩?

    我是直接环内路径压缩,环外不管。

    这样应该是会被卡的(d==n???)

    可是交上去还是过了。

    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define MN 110001
    using namespace std;
    
    int read_ca,read_p;
    inline int read(){
        read_ca=getchar();read_p=0;
        while (read_ca<'0'||read_ca>'9') read_ca=getchar();
        while (read_ca>='0'&&read_ca<='9') read_p=read_p*10+read_ca-48,read_ca=getchar();
        return read_p;
    }
    vector <int> v[MN];
    int T,m,q,p,n,s,d,c[MN],pos[MN],ne[MN],fi[MN],fa[MN],mmh,be[MN];
    bool bo[MN];
    int gf(int x){if (x==fa[x]) return x;else {int y=gf(fa[x]);if (be[x]==be[y]) fa[x]=y;return y;}}
    inline void del(int x){
        if (ne[x]==x){
            for (int i=0;i<v[be[x]].size();i++) fa[v[be[x]][i]]=(v[be[x]][i]+1)%n;
        }else
        ne[fi[x]]=ne[x],fi[ne[x]]=fi[x],fa[x]=ne[x];
    }
    int main(){
        T=read();
        while (T--){
            n=read();s=read()%n;q=read();p=read();m=read();d=read();
            mmh=0;
            for (int i=1;i<n;i++) c[i]=(1LL*c[i-1]*q+p)%m;
            
            for (int i=0;i<n;i++) ne[i]=(i+d)%n,fi[ne[i]]=i,fa[i]=i,bo[i]=0;
            m=0;
            for (int i=0;i<n;i++)
            if (!bo[i]){
                m++;
                v[m].push_back(i);be[i]=m;
                for (int j=ne[i];j!=i;j=ne[j]) bo[j]=1,be[j]=m,v[m].push_back(j);
                
            }
            pos[0]=s;del(s);
                    
            for (int i=1;i<n;i++) pos[i]=gf(c[i]%=n),del(pos[i]);
            
            memset(bo,0,sizeof(bo));
            for (int i=0;i<n;i++)
            if (pos[i]!=i&&!bo[i]){
                for (mmh++,m=i;!bo[m];)mmh++,bo[m]=1,m=pos[m];
            }
            printf("%d
    ",mmh-(s?2:0));    
            for (int i=1;i<=m;i++) v[i].clear();
        }
    }
    View Code
  • 相关阅读:
    福州3中集训day5
    福州三中集训day4
    福州三中集训day3
    福州三中基训day2
    福州三中集训day1
    Python3 字符串
    Python3 数字
    Python3 运算符
    Python3 基础数据类型
    Codeforces Round 253 (Div. 2)
  • 原文地址:https://www.cnblogs.com/Enceladus/p/6877793.html
Copyright © 2020-2023  润新知