Educational_round94题解

Educational_round94题解

A. String Similarity(构造+思维)

解题思路

原字符串长度为2*n-1,需要匹配的字符串一共有n个,要使所有字符串都得到匹配,即让构造的长度为n的字符串每一个位置都能匹配到一个。可得到w[i]=s[2i]

题解

#include<iostream>
using namespace std;

char str[200];
char ans[200];

int main(){
	int T;
	cin >> T;
	while(T--){
		int n;
		cin >> n;
		cin >> str;
		for(int i=0;i<n;i++){
			ans[i] = str[i*2];
		}
		ans[n] = '\0';
		cout << ans << "\n";
	}
}

B. RPG Protagonist(模拟+贪心)

解题思路

首先记大的为s,小的为w。然后考虑p,从小的w开始拿,依次遍历能拿的所有情况。找出最大值即可。(记得开long\ long)

题解

#include<iostream>
#include<math.h>
using namespace std;

int main(){
	int T;
	cin >> T;

	long long p,f,cnt_s,cnt_w,s,w;
	while(T--){
		cin >> p >> f;
		cin >> cnt_s>> cnt_w;
		cin >> s>> w;
		if(s<w){
			swap(s,w);
			swap(cnt_s,cnt_w);
		}
		long long ans = 0;
		for(int i=min(cnt_w,p/w);i>=0;i--){
			long long a = min((p-i*w)/s,cnt_s);//p剩余要拿的s
			long long cnt_w_t = cnt_w-i;
			long long cnt_s_t = cnt_s-a;
			long long b = f - min(cnt_w_t*w,f/w*w);//f拿剩余的
			long long t = max(b-b/s*s,b-cnt_s_t*s);
			ans = max(i+a+(f-b)/w+(b-t)/s,ans);
		}
		cout << ans << "\n";
	}
}

C. Binary String Reconstruction(模拟)

解题思路

就是一个反推字符串的过程。已知有一种情况是两个条件都为假时才会出现0,则先利用这种情况反推出有0的部分。但是这并不是唯一的一种情况,当i-x跟i+x都不在范围内的时候也为0,即在[x,n-x]区间中的字符都为0。其余情况为1。一共扫两遍,第一遍确定0,第二遍判断是否合理

题解

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

char str[100010];
char ans[100010];

int main(){
	int t;
	int x;
	cin >> t;
	while(t--){
		cin >> str + 1;
		cin >> x;
		int n = strlen(str+1);
		for(int i=1;i<=n;i++){
			ans[i] = '1';
			if(i+x>n&&i<=x){
				ans[i] = '0';
			}
		}
		for(int i=1;i<=n;i++){
			if(str[i]=='0'){
				if(i+x<=n){
					ans[i+x] = '0';
				}
				if(i>x){
					ans[i-x] = '0';
				}
			}
		}
		ans[n+1] = '\0';
		bool flag = true;
		for(int i=1;i<=n;i++){
			if(!(str[i]=='1' && ((i+x<=n&&ans[i+x]=='1') || (i>=x&&ans[i-x]=='1'))
					|| (str[i]=='0' && ( (i+x>n && i<x) || !((i+x<=n&&ans[i+x]=='1') || (i>=x&&ans[i-x]=='1')) ) )
				)){
				flag = false;
			}
		}
		if(flag){
			cout << ans+1 <<"\n";
		}else{
			cout << "-1" << "\n";
		}

	}
}
posted @ 2024-07-09 23:09  ZHAOXU333  阅读(3)  评论(0编辑  收藏  举报