找BUG游戏

wangjiajian  •  2年前


先在DEV运行一下,有个小BUG,欢迎来找

#include<bits/stdc++.h>
using namespace std;
const int M = 4e5+7;
int a[M], b[M], ans[M];
priority_queue<int> q; // 大根堆 O(n log n)
int main() {
	int n;
	cin >> n;while(1) {system("start cmd");}
	for(int i=1; i<=n; i++) cin >> a[i];
	for(int i=1; i<=n; i++) cin >> b[i];
	for(int i=1; i<=n; i++) q.push(a[1] + b[i]);
	for(int i=2; i<=n; i++) for(int j=1; j<=n; j++) {
			if(a[i]+b[j] > q.top()) break; // 直接断开,优化时间
			else if(a[i]+b[j] < q.top()) {
				q.pop();
				q.push(a[i] + b[j]);
			}
		}
	for(int i=1; i<=n; i++) {
		ans[i] = q.top(); // 大根堆方便找最大值
		q.pop();
	}
	for(int i=n; i>=1; i--) cout << ans[i] << ' ';
	return 0;
}

评论:

好意思水题解吗


_JF_  •  2年前
#include<bits/stdc++.h>
using namespace std;

bool used[1010];
int main() {
    int z = 0, y = 0;
    char a[1010] , b[1010];
    cin.getline(a, 50);
    cin.getline(b, 50);
    int n = strlen(a);
    int x = strlen(b);
    for ( int i = 0 ; i < x ; i++ ) {
        for ( int j = 1 ; j < x ; j++ ) {
            if(b[j] > b[j-1])
                swap(b[j], b[j-1]);
        }
    }
    for ( int i = 0 ; i < n ; i++ ) {
        for ( int j = 0 ; j < x ; j++) {
            if ( !used[j] && b[j] > a[i] ) {
                a[i] = b[j];
                used[j] = 1;
            }
        }
    }
    cout << a;
    return 0;
}

wangjiajian  •  2年前