Advertisement

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

阅读量:

这次月赛我只说第3、4道题

第三道题:九宫格键盘 AC

这道题和这道题是一模一样的:题目传送门

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 int sum, s;
    
 string a;
    
 int main() {
    
 	getline(cin, a);
    
 	for (int i = 0; i < a.size(); i++) {
    
 		if (a[i]=='a'||a[i]=='d'||a[i]=='g'||a[i]=='j'||a[i]=='m'||a[i]=='p'||a[i]=='t'||a[i]=='w'||a[i]==' ')
    
 			s += 1;
    
 		if (a[i]=='b'||a[i]=='e'||a[i]=='h'||a[i]=='k'||a[i]=='n'||a[i]=='q'||a[i]=='u'||a[i]=='x')
    
 			s += 2;
    
 		if (a[i]=='c'||a[i]=='f'||a[i]=='i'||a[i]=='l'||a[i]=='o'||a[i]=='r'||a[i]=='v'||a[i]=='y')
    
 			s += 3;
    
 		if (a[i]=='s'||a[i]=='z')
    
 			s += 4;
    
 	}
    
 	cout << s << endl;
    
 	return 0;
    
 }

第四道题:预定货物 AC

这道题我攻了两年半,思路:

用一个变量记录进货时的 最小值 ,再用一个变量记录售价减进价的最大值,时间复杂度为O(n)

复制代码
 #include <iostream>

    
 #include <algorithm>
    
 using namespace std;
    
 const int N = 2e6 + 7;
    
 int a[N], b[N];
    
 int main() {
    
 	int n, mx = 0;
    
 	scanf("%d", &n);
    
 	for (int i = 1; i <= n; i++)
    
 		scanf("%d", &a[i]);
    
 	for (int i = 1; i <= n; i++)
    
 		scanf("%d", &b[i]);
    
 	int mn = 0x7fff;
    
 	for (int i = 1; i <= n; i++) {
    
 		mn = min(mn, a[i]);
    
 		int tmp = b[i+1] - mn;
    
 		mx = max(mx, tmp);
    
 	}
    
 	printf("%d", mx);
    
 	return 0;
    
 }

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

全部评论 (0)

还没有任何评论哟~