上海市计算机学会月赛2021年6月丙组
 发布时间 
 阅读量: 
 阅读量 
T1 奖牌的数量
    #include <iostream>
    using namespace std;
    
    int main() {
    	int a, b, c;
    	cin >> a >> b >> c;
    	cout << 3*a + 2*b + c;
    
     	return 0;
    }
        T2 打印B型
    #include <iostream>
    using namespace std;
    
    int main() {
    	int n;
    	cin >> n;
    	
    	for (int i = 1; i <= 2*n-1; i ++) cout << '*';
    	cout << endl;
    	
    	for (int i = 1; i <= n-1; i ++) {
    		cout << '*';
    		for (int j = 1; j <= 2*n-2; j ++) cout << ' ';
    		cout << "*\n";
    	}
    
    	for (int i = 1; i <= 2*n-1; i ++) cout << '*';
    	cout << endl;
    	
    	for (int i = 1; i <= n-1; i ++) {
    		cout << '*';
    		for (int j = 1; j <= 2*n-2; j ++) cout << ' ';
    		cout << "*\n";
    	}
    
    	for (int i = 1; i <= 2*n-1; i ++) cout << '*';
    	cout << endl;
    
     	return 0;
    }
        T3 IP地址
    #include <iostream>
    using namespace std;
    
    int main() {
    	for (int i = 1; i <= 4; i ++) {
    		char ch;
    		int num = 0;
    		for (int j = 1; j <= 8; j ++) {
    			cin >> ch;
    			num = num * 2 + ch - '0';
    		}
    		cout << num;
    		
    		if (i != 4) cout << '.';
    	}
    
     	return 0;
    }
        T4 降雨统计
    #include <iostream>
    using namespace std;
    
    int main() {
    	int n, m;
    	cin >> n >> m;
    	
    	for (int i = 1; i <= n; i ++) {
    		char ch;
    		int cnt = 0;
    		for (int j = 1; j <= m; j ++) {
    			cin >> ch;
    			if (ch == '#') cnt ++;
    			cout << cnt << ' ';
    		}
    		cout << endl;
    	}
    
     	return 0;
    }
        T5 平衡点 (二分)
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #define LL long long
    using namespace std;
    
    const int N = 1e5 + 10;
    int n, a[N];
    
    LL f(int pos) {
    	LL s = 0, t = 0;
    	for (int i = 1; i < pos; i ++) s += a[i] * (pos - i);
    	for (int i = pos + 1; i <= n; i ++) t += a[i] * (i - pos);
    	
    	return abs(s - t);
    }
    
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i ++) cin >> a[i];
    
    	int l = 1, r = n;
    	while (l <= r) {
    		int mid = l + r >> 1;
    
    		LL a = f(mid-1), b = f(mid), c = f(mid+1);
    		
    		if (a > b && c > b) {
    			cout << b;
    			return 0;
    		}
    		else if (a > b && b > c) {
    			l = mid + 1;
    		}
    		else {
    			r = mid - 1;
    		}				
    	}
    
    	return 0;
    }
        T5 平衡点 (循环)
    #include <iostream>
    #include <cmath>
    #define LL long long
    using namespace std;
    
    const int N = 1e5 + 10;
    int n, a[N], s;
    LL l[N], r[N];
    
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i ++) cin >> a[i];
    	
    	s = 0;
    	for (int i = 1; i <= n; i ++) {
    		l[i] = l[i-1] + s;
    		s += a[i];
    	}
    
    	s = 0;
    	for (int i = n; i >= 1; i --) {
    		r[i] = r[i+1] + s;
    		s += a[i];
    	}
    	
    	LL minn = 1e18;
    	for (int i = 1; i <= n; i ++) {
    		minn = min(minn, abs(l[i] - r[i]));
    	}
    	cout << minn;
    
     	return 0;
    }
        全部评论 (0)
 还没有任何评论哟~ 
