SDUST 2015双十一特别赛题解

1、脱单多久了:

//Chengrui1996
#include <stdio.h>

int a[] = {0, 316, 285, 257, 226, 196, 165, 135, 104, 73, 43, 12};

int main() {
    int m, d, i;
// freopen("1.in", "r", stdin);
// freopen("1.out", "w", stdout);
    while (~scanf("%d%d", &m, &d)) {
        printf("%d\n", a[m] - d);
    }
    return 0;
}

2、该约哪一个:

//Chengrui1996
#include <stdio.h>

int main() {
// freopen("1.in", "r", stdin);
// freopen("1.out", "w", stdout);
    int n, i;
    while (~scanf("%d", &n)) {
        int x, y, v = 0x3f3f3f3f, ans = 0;
        scanf("%d%d", &x, &y);
        for (i = 1; i <= n; ++i) {
            int a, b; scanf("%d%d", &a, &b);
            int tmp = (x - a) * (x - a) + (y - b) * (y - b) + (x + y - a - b) * (x + y - a - b);
            if (tmp < v) {
                v = tmp;
                ans = i;
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

3、去吃哪家好:

//Chengrui1996
#include <stdio.h>
#define inf 0x3f3f3f3f;
#define maxn 205

double ax[maxn], ay[maxn], bx[maxn], by[maxn];

int main() {
// freopen("1.in", "r", stdin);
// freopen("1.out", "w", stdout);
    int n, m, i, j;
    while (~scanf("%d%d", &n, &m)) {
        double X, Y; scanf("%lf%lf", &X, &Y);
        for (i = 1; i <= n; ++i) {
            scanf("%lf%lf", &ax[i], &ay[i]);
        }
        for (i = 1; i <= m; ++i) {
            scanf("%lf%lf", &bx[i], &by[i]);
        }
        int a = 0, b = 0;
        double ans = inf;
        for (i = 1; i <= n; ++i) {
            double len = sqrt((ax[i] - X) * (ax[i] - X) + (ay[i] - Y) * (ay[i] - Y));
            for (j = 1; j <= m; ++j) {
                double cur = len + sqrt((ax[i] - bx[j]) * (ax[i] - bx[j]) + (ay[i] - by[j]) * (ay[i] - by[j]));
                if (cur < ans) {
                    ans = cur;
                    a = i, b = j;
                }
            }
        }
        printf("%.4lf %d %d\n", ans, a, b);
    }
    return 0;
}

4、快抢电影票:

//Chengrui1996
#include <stdio.h>
#define inf 1 << 20
#define maxn 25

int a[maxn];

int main() {
// freopen("1.in", "r", stdin);
// freopen("1.out", "w", stdout);
    int n, m;
    while (~scanf("%d%d", &n, &m)) {
        int ans = inf;
        while (n--) {
            int tmp = 0, i;
            for (i = 1; i <= m; ++i) {
                scanf("%d", &a[i]);
                if (a[i] < 0) a[i] = inf;
                tmp += a[i];
                if (i >= 5) tmp -= a[i - 4];
                if (i == m) tmp -= a[i - 3];
                if (i >= 3 && tmp < ans) ans = tmp;
            }
        }
        if (ans == inf) puts("Word sing how turn!");
        else printf("%d\n", ans);
    }
    return 0;
}

5、大力出奇迹:

//Chengrui1996
#include <stdio.h>
#define maxn 55

long long c[maxn][maxn];

int main() {
// freopen("1.in", "r", stdin);
// freopen("1.out", "w", stdout);
    c[0][0] = 1;
    int i, j;
    for (i = 1; i < maxn; ++i) {
        c[i][0] = 1;
        for (j = 1; j <= i; ++j) {
            c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
        }
    }
    int a, x, n, m;
    while (~scanf("%d%d%d%d", &a, &x, &n, &m)) {
        x /= a;
        if (m == 0 || x == 0) {
            puts("0.0000");
            continue;
        }
        if (x > n - m) {
            puts("1.0000");
            continue;
        }
        printf("%.4lf\n", 1.0 - (double)c[n - m][x] / c[n][x]);
    }
    return 0;
}

你可能感兴趣的:(SDUST 2015双十一特别赛题解)