.
查看原帖
.
670347
Apolit33楼主2023/12/2 19:16
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

struct Weapon {
    int x, y;  
    bool destroyed;  
};

struct Bomb {
    int u, v;  
    bool used;  
};

double calculateDistance(int x1, int y1, int x2, int y2) {
    int dx = x1 - x2;  
    int dy = y1 - y2;  
    return sqrt(dx*dx + dy*dy);  
}

int main() {
    int M, n, k;
    cin >> M >> n >> k;
    
    vector<Weapon> weapons(M);
    for (int i = 0; i < M; i++) {
        cin >> weapons[i].x >> weapons[i].y;
        weapons[i].destroyed = false;
    }
    
    vector<Bomb> bombs(n);
    for (int i = 0; i < n; i++) {
        cin >> bombs[i].u >> bombs[i].v;
        bombs[i].used = false;
    }
    
    sort(bombs.begin(), bombs.end(), [](const Bomb& a, const Bomb& b) {
        return calculateDistance(a.u, a.v, 0, 0) < calculateDistance(b.u, b.v, 0, 0);
    });
    
    int count = 0;  
    for (int i = 0; i < M; i++) {
        bool destroyed = false;
        
        for (int j = 0; j < n; j++) {
            if (!bombs[j].used && !weapons[i].destroyed
          #include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

struct Weapon {
    int x, y;  
    bool destroyed;  
};

struct Bomb {
    int u, v;  
    bool used;  
};

double calculateDistance(int x1, int y1, int x2, int y2) {
    int dx = x1 - x2;  
    int dy = y1 - y2;  
    return sqrt(dx*dx + dy*dy);  
}

int main() {
    int M, n, k;
    cin >> M >> n >> k;
    
    vector<Weapon> weapons(M);
    for (int i = 0; i < M; i++) {
        cin >> weapons[i].x >> weapons[i].y;
        weapons[i].destroyed = false;
    }
    
    vector<Bomb> bombs(n);
    for (int i = 0; i < n; i++) {
        cin >> bombs[i].u >> bombs[i].v;
        bombs[i].used = false;
    }
    
    sort(bombs.begin(), bombs.end(), [](const Bomb& a, const Bomb& b) {
        return calculateDistance(a.u, a.v, 0, 0) < calculateDistance(b.u, b.v, 0, 0);
    });
    
    int count = 0;  
    for (int i = 0; i < M; i++) {
        bool destroyed = false;
        
        for (int j = 0; j < n; j++) {
            if (!bombs[j].used && !weapons[i].destroyed
                && calculateDistance(bombs[j].u, bombs[j].v, weapons[i].x, weapons[i].y) <= k) {
                bombs[j].used = true;
                count++;
                destroyed = true;
            }
        }
        
        if (destroyed) {
            weapons[i].destroyed = true;
        } else {
            break;
        }
    }
    
    cout << count << endl;
    
    return 0;
}      && calculateDistance(bombs[j].u, bombs[j].v, weapons[i].x, weapons[i].y) <= k) {
                bombs[j].used = true;
                count++;
                destroyed = true;
            }
        }
        
        if (destroyed) {
            weapons[i].destroyed = true;
        } else {
            break;
        }
    }
    
    cout << count << endl;
    
    return 0;
}
2023/12/2 19:16
加载中...