2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛

传送门

A.Chuanpai

int main(){
        int _=read;
        while(_--){
            int n=read,res=0;
            rep(i,1,6)
            	rep(j,1,i)
            		if(i+j==n) res++;
            cout<<res<<endl;
        }
	    return 0;
}

B.Hotpot

int n,k,m,a[maxn],b[maxn],c[maxn];

int main(){
	int _=read;
	while(_--){
		n=read,k=read,m=read;
		rep(i,1,k) b[i]=0;
		rep(i,1,n) a[i]=read,c[i]=0;
		for(int i=1;i<=min(2*n,m);i++){
			int t=i%n;
			if(!t) t=n;
			if(b[a[t]]) c[t]++,b[a[t]]=0;
			else b[a[t]]=1;
		}
		if(m>2*n){
			int t1=m/(2*n),t2=m%(2*n);
			rep(i,1,n) c[i]=c[i]*t1;
			rep(i,1,k) b[i]=0;
			rep(i,1,t2){
				int t=i%n;
				if(!t) t=n;
				if(b[a[t]]) c[t]++,b[a[t]]=0;
				else b[a[t]]=1;
			}
		}
		rep(i,1,n) cout<<c[i]<<" ";
		puts("");
	}
	return 0;
}

D.Rock Paper Scissors

ll a[3],b[3];

int main(){
    int _=read; 
    while(_--){
        for(int i=0;i<3;i++) cin>>a[i];
        for(int i=0;i<3;i++) cin>>b[i];
       ll ans=0;
        ll d;
        d=min(a[0],b[1]);
        ans+=d, a[0]-=d, b[1]-=d;
        d=min(a[1],b[2]);
        ans+=d, a[1]-=d, b[2]-=d;
        d=min(a[2],b[0]);
        ans+=d, a[2]-=d, b[0]-=d;
        for(int i=0;i<3;i++) d=min(a[i],b[i]), a[i]-=d, b[i]-=d;
        for(int i=0;i<3;i++) ans-=a[i];
        cout<<ans<<endl;
    }
	return 0;
}

H Nihongo wa Muzukashii D

int main(){
    int _=read; 
    while(_--){
        string s,res="";cin>>s;
        int n=s.size()-1;
    	if(s=="ikimasu"){
             res="itte";
            cout<<res<<endl;
           continue;
        }
           
    	if(s.substr(n-6+1,6)=="rimasu"){
    		res=s.substr(0,n-6+1)+"tte";
    	}
    	else if(s.substr(n-7+1,7)=="chimasu"){
    		res=s.substr(0,n-7+1)+"tte";
    	}
    	else if(s.substr(n-6+1,6)=="mimasu"){
    		res=s.substr(0,n-6+1)+"nde";
    	}
    	else if(s.substr(n-6+1,6)=="bimasu"){
    		res=s.substr(0,n-6+1)+"nde";
    	}
    	else if(s.substr(n-6+1,6)=="nimasu"){
    		res=s.substr(0,n-6+1)+"nde";
    	}
    	else if(s.substr(n-6+1,6)=="kimasu"){
    		res=s.substr(0,n-6+1)+"ite";
    	}
    	else if(s.substr(n-6+1,6)=="gimasu"){
    		res=s.substr(0,n-6+1)+"ide";
    	}
    	else if(s.substr(n-7+1,7)=="shimasu"){
    		res=s.substr(0,n-7+1)+"shite";
    	}
    	cout<<res<<endl;
    }
	return 0;
}

K K-skip Permutation

int main(){
    int n=read,k=read;
    int idx=0;
    rep(i,1,k){
    	for(int j=0;j*k+i<=n;j++){
    		cout<<j*k+i<<" ";
    	}
    }
	return 0;
}


L Spicy Restaurant


int h[N],e[N],ne[N],idx,n,m,Q,w[N];
void init(){
    idx=0;
    memset(h,-1,sizeof h);
}
void add(int a,int b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx,idx++;
}

int dis[N][110],st[N];

void bfs(int s){
	memset(st,0,sizeof st);
	queue<int>q;
	rep(i,1,n)
		if(w[i]==s){
			q.push(i);st[i]=1;dis[i][s]=0;
		}
	while(q.size()){
		int t=q.front();q.pop();
		for(int i=h[t];~i;i=ne[i]){
			int j=e[i];
			if(st[j]) continue;
			dis[j][s]=dis[t][s]+1;
			q.push(j);st[j]=1;
		}
	}
}

int main(){
	init();
	n=read,m=read,Q=read;
	rep(i,1,n) w[i]=read;
	rep(i,1,m){
		int u=read,v=read;
		add(u,v);add(v,u);
	}
	memset(dis,-1,sizeof dis);
	rep(i,1,100) bfs(i);
	
	while(Q--){
		int p=read,a=read;
		int minn=inf;
		for(int i=1;i<=a;i++)
			if(dis[p][i]!=-1)
				minn=min(minn,dis[p][i]);
		if(minn==inf) minn=-1;
		printf("%d
",minn);
	}
	return 0;
}




M True Story


ll s[maxn],t[maxn],p[maxn];

int main(){
    ll n=read,k=read,x=read,p0=read;
    ll res=0,sum=p0;
    rep(i,1,n) s[i]=read;
    rep(i,1,k){
    	t[i]=read;
    }
    rep(i,1,k){
    	p[i]=read;
    	sum=max(sum,p[i]-t[i]);
    }
    sort(s+1,s+1+n);
   // cout<<sum<<endl;
    per(i,n,1){
    	if(s[i]*sum>=x) res++;
    	else break;
    }
    cout<<res<<endl;
	return 0;
}

原文地址:https://www.cnblogs.com/OvOq/p/15024545.html