Codeforces Round #553 (Div. 2)

A

# include <bits/stdc++.h>
using namespace std;

const int INF=1e9;
int f[55];
int main()
{
	int n;
	int len=INF;
	string s;
	char b[4]={'A','C','T','G'};
	
	cin>>n;
	cin>>s;
	
	for(int j=0;j<n;j++){
		int l=0,d=0;
		if((j+3)<n){
			for(int i=0;i<4;i++){
				if(s[j+i]==b[i]){
					continue;
				}else{
					l=abs(int(s[j+i]-b[i]));
					d+=min(l,(26-l));
					//cout<<l<<endl;
				}
			}
			len=min(len,d);	
		}
	}
	
	cout<<len;
	return 0;
}

B

# include <bits/stdc++.h>
using namespace std;

int a[550][550];
int f[1050];
int s[550]; 
int flag=0,d;
int n,m;
void dfs(int i)
{	
	if(i==0){
		for(int j=0;j<m;j++){
			if(a[i][j]!=-1){
				d=a[i][j];
				s[i]=j;
				dfs(1);
			}
		}
		
	}else if(i!=(n-1)){
		for(int j=0;j<m;j++){
			if(a[i][j]!=-1){
				d=a[i][j]^d;
				s[i]=j;
				dfs(i+1);
			}
		}
	}else{
		for(int j=0;j<m;j++){
			if(a[i][j]==d||a[i][j]==-1) continue;
			else{ 
				s[i]=j;
				flag=1;
				printf("TAK\n");
				for(int k=0;k<n;k++){
					printf("%d ",s[k]+1);
				}
				exit(0);
			}
		}
		if(flag==0){
			return ;
		}
	}
	
	return ;
}
int main()
{	
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++){
		memset(f,0,sizeof(f));
		for(int j=0;j<m;j++){
			scanf("%d",&a[i][j]);
			if(f[a[i][j]]){
				a[i][j]=-1;
			}else{
				f[a[i][j]]=1;
			}
		}
	}
	
	dfs(0);
	
	if(flag==0){
		printf("NIE");
	}
	
	return 0;
}

C

# include <bits/stdc++.h>
using namespace std;

const int MOD=1e9+7;
typedef long long LL;
int main()
{
	LL l,r;
	LL sl=0,sr=0;
	LL o=1,e=2;
	LL len=0;
	int flag=0;
	
	scanf("%lld %lld",&l,&r);
	l=l-1;
	for(int i=0;;i++){
		//cout<<pow(2,i)<<endl;
		len+=pow(2,i);
		if(len<=l){
			if(i%2==0){//小于L部分的 
				for(int j=1;j<=pow(2,i);j++){
					sl+=o;
					sl=sl%MOD;
					sr=sl;
					o+=2;
				}
			}else{
				for(int j=1;j<=pow(2,i);j++){
					sl+=e;
					sl=sl%MOD;
					sr=sl;
					e+=2;
				}
			}
			//cout<<i<<" "<<sl<<endl;
		}else{
			//cout<<"@"<<endl;
			if(flag==0){
				for(int j=len-pow(2,i)+1;j<=l;j++){//大于L部分的 
					if(i%2==0){
						sl+=o;
						sl=sl%MOD;
						sr=sl;
						o+=2;
					}else{
						sl+=e;
						sl=sl%MOD;
						sr=sl;
						e+=2;
					}
				}
				for(int j=l+1-(len-pow(2,i));j<=pow(2,i);j++){//大于L部分但是属于R的 
					if(i%2==0){
						sr+=o;
						sr=sr%MOD;
						o+=2;
					}else{
						sr+=e;
						sr=sr%MOD;
						e+=2;
					}
				}
				flag=1;	
				continue;
			}
			
			if(len<=r){
				if(i%2==0){
					for(int j=1;j<=pow(2,i);j++){
						sr+=o;
						sr=sr%MOD;
						o+=2;
					}
				}else{
					for(int j=1;j<=pow(2,i);j++){
						sr+=e;
						sr=sr%MOD;
						e+=2;
					}
				}
			}else{
				for(int j=len-pow(2,i)+1;j<=r;j++){
					if(i%2==0){
						sr+=o;
						sr=sr%MOD;
						o+=2;
					}else{
						sr+=e;
						sr=sr%MOD;
						e+=2;
					}
				}
				break;
			}
			//cout<<i<<" "<<sl<<" "<<sr<<endl; 
		}
	}
	cout<<sl<<" "<<sr<<endl;
	printf("%lld",(sr-sl)%MOD);
	return 0;
}

D

# include <bits/stdc++.h>
using namespace std;

typedef long long LL;
pair<LL,LL> p[100100];
int main()
{
	LL n;
	LL sum1=0,sum2=0;
	scanf("%lld",&n);
	for(int i=0;i<n;i++){
		scanf("%lld %lld",&p[i].first,&p[i].second);
	}
	sort(p,p+n,greater<pair<int,int> >());
//	printf("\n");
//	for(int i=0;i<n;i++){
//		printf("%lld %lld\n",p[i].first,p[i].second);
//	}
	for(int i=0;i<n;i++){
		sum1+=p[i].first*i+p[i].second*(n-(i+1));
	}
	int d;
	for(int i=(n-1);i>=0;i--){
		if(p[i].first==p[i-1].first) continue;
		else{
			//cout<<"@"<<d<<endl;
			d=i;
			break;
		}
	}
	int t;
	t=p[d].second;
	p[d].second=p[n-1].second; 
	p[n-1].second=t;
//	printf("\n");
//	for(int i=0;i<n;i++){
//		printf("%lld %lld\n",p[i].first,p[i].second);
//	}
	for(int i=0;i<n;i++){
		sum2+=p[i].first*i+p[i].second*(n-(i+1));
	}
	//cout<<sum1<<" "<<sum2<<endl;
	printf("%lld",min(sum1,sum2));
	
	return 0;
}

posted @ 2022-02-27 00:16  fengzlj  阅读(25)  评论(0)    收藏  举报