上海市计算机学会2020年4月月赛(丙组)

第一道题:竞选班长 AC

#include <iostream>
#include <algorithm>
using namespace std;
int a, b, c, d;
int main() {
	scanf("%d%d%d%d", &a, &b, &c, &d);
	if ((a>=90&&b>=90||a>=90&&c>=90||b>=90&&c>=90) && d>=85)
		puts("Qualified");
	else
		puts("Not qualified");
	return 0;
}

第二道题:永恒的生命游戏 AC

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 107;
int n, m;
char s[N][N];
bool in_map(int x, int y) {
	return x>=0 && x<n && y>=0 && y<m;
}
int cal(int x, int y) {
	int ct = 0;
	for (int i = x-1; i <= x+1; i++) {
		for (int j = y-1; j <= y+1; j++) {
			if (i==x && j==y || !in_map(i, j)) continue;
			if (s[i][j] == '*') ct++;
		}
	}
	return ct;
}
bool check(int x, int y) {
	int ct = cal(x, y);
	return (s[x][y]=='*' && ct>=2 && ct<=3 || s[x][y]=='.' && ct!=3);
}
bool solve() {
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			if (!check(i, j))
				return false;
	return true;
}
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++)
		scanf("%s", s[i]);
	puts(solve() ? "Still life" : "Other");
	return 0;
}

第三道题:调配问题(一) AC

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 7;
int n, a[N];
long long s, ans;
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d", a + i);
		s += a[i];
		ans += abs(s);
	}
	printf("%lld\n", ans);
	return 0;
}

第四道题:数字验证 AC

#include <bits/stdc++.h>
using namespace std;
char s[505];
int main() {
	cin >> s;
	int p = 0, q = -1, n = strlen(s+p);
	if (s[p]=='+' || s[p]=='-') p++;
	if (n==1 && s[p]=='.') {
		puts("Invalid");
		return 0;
	}
	for (int i = p; s[i]; i++) {
		if (s[i] == '.') {
			q = i;
			break;
		}
	}
	for (int i = p; s[i]; i++) {
		if ( i!=q && !isdigit(s[i]) ) {
			puts("Invalid");
			return 0;
		}
	}
	puts("Valid");
	return 0;
}

第五道题:吃苹果 AC

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6 + 7;;
int n, a[N], sum = 0;
int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; i ++)
		scanf("%d", a + i);
	sort(a, a + n);
	for (int i = 0; i < n; i ++)
		if (sum <= a[i]) sum++;
	printf("%d\n", sum);
	return 0;
}

若有更好的解,欢迎评论或私信与我~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值