蹲点蹲到了题解位,也顺便来博客上更新一下

T2

在洛谷中查看

思路

既然我们认为 Il 是相同的,那么我们就把这两个字符统一修改为同一个字符,然后在判断这两个字符串是否相同即可。

代码

#include<bits/stdc++.h>

using namespace std;

const int N = 25;
char a[N],b[N];

int main(){
	scanf("%s%s",a,b);
	// 统一将i修改为l
	int la = strlen(a),lb = strlen(b);
	for(int i = 0;i < la;i++){
		if(a[i] == 'I'){
			a[i] = 'l';
		}
	}
	for(int i = 0;i < lb;i++){
		if(b[i] == 'I'){
			b[i] = 'l';
		}
	}
	if(strcmp(a,b) == 0){
		printf("YES");
	} else{
		printf("NO");
	}
	return 0;
}

T4

在洛谷中查看

思路

读入三个字符串,分别表示原网站上的 first name,last name,接收状态,如果接受状态为 Rejected 则按原网站上的 last name,first name 的顺序输出;否则按原网站上的 last name,first name 的顺序输出

代码

#include<bits/stdc++.h>

using namespace std;

const int N = 1010;
char a[N],b[N],c[N];

int main(){
	scanf("%s%s%s",a,b,c);
	if(strcmp(c,"Rejected") == 0){
		// 不想多写一个if,就用了swap
		swap(a,b);
	}
	printf("%s %s",a,b);
	return 0;
}

T6

在洛谷中查看

思路

看到这题,我就想到应该用枚举去做。那么应该根据什么枚举就是个问题。如果根据天数进行枚举,那么我会发现,一天售出物品的数量是不定的。那么就只能根据物品进行枚举了,也就是说看每一个物品在哪一天被售出。如果一次枚举某个物品在哪一天售出的话呢复杂度为 O(mn)O(m^n),这显然会超时。

那么可以在这里做一个简单的贪心,能卖的一些贵的肯定尽量卖贵些,当然如果在无论哪一天售出该商品都会亏本的话呢,我们就不卖此物品了,这样复杂度为 O(n×m)O(n \times m)

代码

#include<bits/stdc++.h>

using namespace std;

const int N = 110;
int n,m,v[N],w[N][N];

int main(){
	scanf("%d%d",&n,&m);
	for(int i = 1;i <= n;i++){
		scanf("%d",&v[i]);
	}
	for(int i = 1;i <= m;i++){
		for(int j = 1;j <= n;j++){
			scanf("%d",&w[i][j]);
		}
	}
	int ans = 0;
	for(int i = 1;i <= n;i++){
		int mx = 0;
		for(int j = 1;j <= m;j++){
			mx = max(mx,w[j][i]-v[i]);
		}
		// 如果mx的值为0,则说明在无论哪一天售出该商品都不会赚到钱,则不卖此商品,收益为0,因此此处不需要特判
		ans += mx;
	}
	printf("%d",ans);
	return 0;
}