Home  >  Article  >  Web Front-end  >  RCC 2014 Warmup (Div. 2)_html/css_WEB-ITnose

RCC 2014 Warmup (Div. 2)_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 12:05:581147browse

Question A: Whether it is better to use all c, all d, or both is the least problematic. Pay attention to the special judgment when n * m <= k

Question B: Meaning of the question It's a trap. Just open a vis array to record the number of previous submissions for each person. If there is a contradiction, false k connections are enough

Question D: Press DP like this, sort by k, and then the dp array only needs to record the complete set, use the rolling array to optimize the space, and then add k * d each time to get the minimum value.

Question E: Construct the problem, but it seems easier to use a random algorithm. The constructed matrix should be

a a a a b

a a a a a b

a a a a a b

c c c c c d

Like this, then just randomize a, b , c, d to determine whether the sum of each row and column is a perfect square number

Code:

A:

B:
#include <stdio.h>#include <string.h>#include <math.h>2 #define min(a,b) ((a)<(b)?(a):(b))int c, d, n, m, k;int main() {    scanf("%d%d%d%d%d", &c, &d, &n, &m, &k);    int sb = n * m - k;    if (sb <= 0) printf("0\n");    else printf("%d\n", min(sb * d, min((int)ceil(sb * 1.0 / n) * c, sb / n * c + sb % n * d)));    return 0;}

C:
#include <stdio.h>#include <string.h>const int N = 100005;int n, vis[N];struct Solu {    int x, k;} s[N];bool judge() {    memset(vis, 0, sizeof(vis));    for (int i = 0; i < n; i++) {        int x = s[i].x, k = s[i].k;        if (x == vis[k])            vis[k]++;        else if (x > vis[k])            return false;    }    return true;}int main() {    scanf("%d", &n);    for (int i = 0; i < n; i++)        scanf("%d%d", &s[i].x, &s[i].k);    if (judge()) printf("YES\n");    else printf("NO\n");    return 0;}

D:
#include <stdio.h>#include <string.h>int n, k;int main() {    scanf("%d%d", &n, &k);    if ((n - k) <= k) printf("-1\n");    else {        printf("%d\n", n * k);        for (int i = 1; i <= n; i++) {            for (int j = 1; j <= k; j++) {                int a = i, b = i + j;                if (b > n) b -= n;                printf("%d %d\n", a, b);            }        }    }    return 0;}<br> </p>
<p></p> <p> </p> E: <pre name="code" class="sycode">#include <stdio.h>#include <string.h>#include <algorithm>#define min(a,b) ((a)<(b)?(a):(b))using namespace std;__int64 one = 1;const int N = 105;const int M = (1<<20) + 5;const __int64 INF = (one<<62);__int64 b, dp[M];int i, j, n, m;struct F {    __int64 x, k, s;} f[N];bool cmp(F a, F b) {    return a.k < b.k;}int main() {    __int64 ans = INF;    scanf("%d%d%I64d", &n, &m, &b);    for (i = 1; i <= n; i++) {        int num, ss;        scanf("%I64d%I64d%d", &f[i].x, &f[i].k, &num);        while (num--) {            scanf("%d", &ss);            f[i].s |= (1<<(ss-1));        }    }    int smax = (1<<m);    sort(f + 1, f + n + 1, cmp);    for (i = 1; i < smax; i++)        dp[i] = INF;    for (i = 1; i <= n; i++) {        for (j = 0; j < smax; j++) {            int ss = (j|f[i].s);            dp[ss] = min(dp[ss], dp[j] + f[i].x);        }        ans = min(ans, dp[smax - 1] + f[i].k * b);    }    if (ans == INF) ans = -1;    printf("%I64d\n", ans);    return 0;}

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>int n, m;bool check(int num) {    int m = (int)sqrt(num);    return m * m == num;}int main() {    scanf("%d%d", &n, &m);    int a, b, c, d, i, j;    while (1) {        a = rand() % 100 + 1;        b = rand() % 100 + 1;        c = rand() % 100 + 1;        d = rand() % 100 + 1;        if (check((m - 1) * a * a + b * b) &&             check((m - 1) * c * c + d * d) &&             check((n - 1) * a * a + c * c) &&             check((n - 1) * b * b + d * d))            break;    }    for (i = 0; i < n - 1; i++) {        for (j = 0; j < m - 1; j++)            printf("%d ", a);        printf("%d\n", b);    }    for (j = 0; j < m - 1; j++)        printf("%d ", c);    printf("%d\n", d);    return 0;}



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn