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

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

WBOY
Release: 2016-06-24 12:05:58
Original
1180 people have browsed it

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;}
Copy after login

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;}
Copy after login

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;}
Copy after login

#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;}
Copy after login



Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template