Codeforces Round #750 (Div. 2)

):稍微补一下.


A. Luntik and Concerts

void solve(){
    
    
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	
	printf("%d\n",(a+c)%2);
}

B. Luntik and Subsequences

void solve(){
    
    
	int n;
	scanf("%d",&n);
	
	int c1 = 0, c2 = 0;
	for(int i=1;i<=n;i++){
    
    
		scanf("%d",&a[i]);
		if(a[i]==1)	c1++;
		else if(a[i]==0)	c2++;
	}
	ll ans = 0;
	ans += ((ll)1<<c2)*c1;
	
	printf("%lld\n",ans);
}

C. Grandma Capa Knits a Scarf

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>

using namespace std;

void solve(){
    
    
	int n;
	scanf("%d",&n);
	string s;
	cin >> s;
	
	int ans = n+1;
	for(int i=0;i<26;i++){
    
    
		char c = (char)('a'+i);
		
		int cnt = 0,l = 0, r = n-1;
		while(l<r){
    
    
			if(s[l]==s[r])	l++,r--;
			else if(s[l]==c)	l++,cnt++;
			else if(s[r]==c)	r--,cnt++;
			else{
    
    
				cnt = n+1;
				break;
			}
		}
		ans = min(ans,cnt);
	}
	if(ans == n+1)	puts("-1");
	else   printf("%d\n",ans);
}

int main()
{
    
    
	int t;
	scanf("%d",&t);
	while(t--){
    
    
		solve();
	}
	
	return 0;
}

D. Vupsen, Pupsen and 0

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>

using namespace std;

void solve(){
    
    
	int n;
	scanf("%d",&n);
//	for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
	
	if(n&1){
    
    
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		
		if((x+y)!=0)	printf("%d %d %d ",-z,-z,x+y);
		else if((y+z)!=0)	printf("%d %d %d ",y+z,-x,-x);
		else printf("%d %d %d ",-y,x+z,-y);
		n-=3;
	}
	
	for(int i=1;i<=n;i+=2){
    
    
		int x,y;
		scanf("%d%d",&x,&y);
		printf("%d %d ",-y,x);
	}
	cout << endl;
}

int main()
{
    
    
	int t;
	scanf("%d",&t);
	while(t--){
    
    
		solve();
	}
	
	return 0;
}

F1. Korney Korneevich and XOR (easy version)

F1,F2的差距是数据范围不一样,均为动态规划类型题.
F1可以定义dp[i]表示异或值为i的最小末尾值.

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <set>

using namespace std;

int f[514];	
//int a[100010];
//定义dp[i]表示异或值为 i 的最小末尾值.

int main()
{
    
    
	int n;
	scanf("%d",&n);
	
//	for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
	memset(f,0x3f,sizeof f);
	f[0] = 0;
	int x;
	for(int i=1;i<=n;i++){
    
    
		scanf("%d",&x);
		f[x] = min(f[x],x);
		
		for(int j=0;j<=512;j++){
    
    
			if(f[j]<x){
    
    
				f[j^x] = min(f[j^x],x);
			}
		}
	}
	set<int> st;
	
	for(int i=0;i<=512;i++){
    
    
		if(f[i]!=0x3f3f3f3f)	st.insert(i);
	}
	
	printf("%d\n",st.size());
	set<int>::iterator it;
	for(it = st.begin();it!=st.end();it++){
    
    
		cout << *it << " ";
	}
	cout << endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_50435987/article/details/121015463