• AtCoder Beginner Contest 099


    A - ABD

    大意:

    输入1-999就输出ABC,否则输出ABD

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int n;
    int main(){
        cin >> n;
        if (n >= 1000) cout << "ABD" << endl;
        else
            cout << "ABC" << endl;
        return 0;
    }
    

    B - Stone Monument

    大意:

    从左到右有999个塔,塔高分别为1 1+2 1+2+3 1+2+3+4.....

    现在因为积雪,使得相邻两个塔的塔高变为了a和b,问积雪有多高

    思路:

    b-a代表b是第几个塔,算一下原来是多少,现在是多少,相减即可

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int a, b, sum[N];
    int main() {
        for (int i = 1; i <= 999; i++) {
            sum[i] += sum[i - 1] + i;
        }
        cin >> a >> b;
        cout << sum[b - a - 1] - a;
        return 0;
    }
    

    C - Strange Bank

    大意:

    给出金额n,现在一次取钱只能取出1块钱或者是6或9的幂次块钱,问最少需要取多少才能正好取出n块钱

    思路:

    完全背包dp即可

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int n, s6[N], s9[N], dp[N];
    int main() {
        s6[1] = 6, s9[1] = 9;
        for (int i = 2; i <= 9; i++) {
            s6[i] = s6[i - 1] * 6;
            s9[i] = s9[i - 1] * 9;
        }
        cin >> n;
        for (int i = 0; i <= n; i++) {
            dp[i] = i;
        }
        for (int i = 1; i <= 9; i++) {
            for (int j = s6[i]; j <= n; j ++) {
                dp[j] = min(dp[j], dp[j - s6[i]] + 1);
            }
        }
    
        for (int i = 1; i <= 9; i++) {
            for (int j = s9[i]; j <= n; j ++) {
                dp[j] = min(dp[j], dp[j - s9[i]] + 1);
            }
        }
        int res = 0x3f3f3f3f;
        for (int i = 0; i <= n; i++) {
            res = min(n - i + dp[i], res);
        }
        cout << res << endl;
        return 0;
    }
    

    D - Good Grid

    大意:

    给出一个nxn的矩阵,每个位置都涂着1-c之间任意一种颜色,从颜色i变为颜色j需要花费(D_{i,j}),现在要求横坐标+纵坐标的和模3相同的位置颜色必须相同,不同的位置颜色必须不同,最少的代价是多少

    c<=30

    思路:

    因为颜色种类比较少,所以可以先统计对3取模的位置用各个颜色多少次,然后枚举对3取模的位置取什么颜色,计算花费即可,这样复杂度为(30^3)

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int n, c, C[505][505], D[35][35], num[3][35];
    int main() {
        cin >> n >> c;
        for (int i = 1; i <= c; i++) {
            for (int j = 1; j <= c; j++) {
                cin >> D[i][j];
            }
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                cin >> C[i][j];
                num[(i + j) % 3][C[i][j]]++;
            }
        }
        int res = 0x3f3f3f3f;
        for (int i = 1; i <= c; i++) {
            int sum1 = 0;
            for (int j = 1; j <= c; j++) {
                sum1 += num[0][j] * D[j][i];
            }
            for (int j = 1; j <= c; j++) {
                if (i == j) continue;
                int sum2 = 0;
                for (int k = 1; k <= c; k++) {
                    sum2 += num[1][k] * D[k][j];
                }
                for (int k = 1; k <= c; k++) {
                    if (k == j||k==i) continue;
                    int sum3 = 0;
                    for (int l = 1; l <= c; l++) {
                        sum3 += num[2][l] * D[l][k];
                    }
                    res = min(res, sum1 + sum2 + sum3);
                }
            }
        }
        cout << res << endl;
        return 0;
    }
    
  • 相关阅读:
    jxl 单元格画斜线
    阿里云 tomcat 配置 注意
    java 的 数据库连接测试类 (SQL server)
    关于使用jackson.jar解析JSON时,大写JSON key值发生报错的问题
    JS配置文件动态加载CSS,js和定义请求路径
    SQL SERVER 2008升级SQL SERVER 2008 R2或者10.00.1600升级10.50.1600
    IDEA 启动运行的tomcat服务器项目,只能使用localhost访问的解决方法:
    舞会
    01序列
    交错01串
  • 原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/14360317.html
Copyright © 2020-2023  润新知