zoukankan      html  css  js  c++  java
  • P3207 [HNOI2010]物品调度

    传送门

    完了题目看错了……还以为所有的(x,y)都要一样……结果题解都没看懂……
    先考虑如果已经求出了所有的(pos)要怎么办,那么我们可以把(0)也看做是一个箱子,然后最后每个箱子都在一个环里。如果是自环无视,如果(0)在这个环里就用(0)做每次的中介把所有都换到正确的位置上,总共要(L-1)次,否则的话把(0)换进环里然后换完之后再换出去,总共要换(L+1)
    我们发现随着(x)的增大,(pos)肯定是形成一个环的……随意就枚举(y)的值,然后看看这个环上还有没有空位可以放,有的话就放进去。总之就是用并查集维护,每次放完之后指向下一个能放的位置,即(x+D)

    //minamoto
    #include<bits/stdc++.h>
    #define R register int
    #define fp(i,a,b) for(R i=a,I=b+1;i<I;++i)
    #define fd(i,a,b) for(R i=a,I=b-1;i>I;--i)
    using namespace std;
    char buf[1<<21],*p1=buf,*p2=buf;
    inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
    int read(){
        R res,f=1;char ch;
        while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
        for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
        return res*f;
    }
    const int N=1e5+5;
    int n,S,Q,P,M,D,x,y,ans,cnt,tot,fa[N],C[N],pos[N];bool vis[N];
    int find(R x){return fa[x]==x?x:fa[x]=find(fa[x]);}
    void merge(R x,R y){fa[find(x)]=find(y);}
    void solve(){
    	n=read(),S=read(),Q=read(),P=read(),M=read(),D=read();
    	fp(i,1,n-1)C[i]=(1ll*C[i-1]*Q+P)%M;fp(i,0,n-1)fa[i]=i;
    	memset(vis,0,sizeof(vis)),pos[0]=S,vis[S]=true,merge(S,(S+D)%n);
    	fp(i,1,n-1){
    		x=find(C[i]%n),y=0;
    		while(vis[x])++y,x=find((C[i]+y)%n);
    		pos[i]=x,vis[x]=1,merge(x,(x+D)%n);
    	}
    	memset(vis,0,sizeof(vis)),ans=cnt=0;
    	fp(i,0,n-1)if(!vis[i]){
    		tot=0,x=i;
    		while(!vis[x])++tot,vis[x]=true,x=pos[x];
    		if(tot>1)ans+=tot,++cnt;
    	}ans+=pos[0]?cnt-2:cnt;printf("%d
    ",ans);
    }
    int main(){
    //	freopen("testdata.in","r",stdin);
    	int T=read();
    	while(T--)solve();
    	return 0;
    }
    
  • 相关阅读:
    vs2012远程调试功能的改进
    【转】SpringBoot处理url中的参数的注解
    通过Maven导出war包时报错:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project
    【转载】JAVA生成随机数工具类RandomStringUtils详解
    linux centos7 搭建开发环境
    【转载】idea 使用Tomcat 部署war 和 war exploded的区别
    SSM整合文件
    mybatis 数据库properties
    win10 在服务中找不到mysql的解决办法
    idea 创建springmvc项目
  • 原文地址:https://www.cnblogs.com/bztMinamoto/p/10055300.html
Copyright © 2011-2022 走看看