zoukankan      html  css  js  c++  java
  • zufe 蓝桥选拔

    https://zufeoj.com/contest.php?cid=1483

    问题 A: A

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5 + 10;
    int n;
    int num[maxn];
    map<int, int> mp;
    
    int main() {
        scanf("%d", &n);
        for(int i = 0; i < n; i ++) {
            scanf("%d", &num[i]);
            mp[num[i]] ++;
        }
    
        sort(num, num + n);
        int maxx = num[n - 1];
        for(int i = 0; i <= maxx; i ++)
            printf("%d
    ", mp[i]);
        return 0;
    }
    View Code

    问题 B: 平方数(sevensqr)

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    bool is(int x) {
        vector<int> num;
        int t = x;
        while(t) {
            num.push_back(t % 10);
            t /= 10;
        }
    
        map<int, int> mp;
        for(int i = 0; i < num.size(); i ++) {
            mp[num[i]] ++;
            if(mp[num[i]] > 1) return false;
        }
        return true;
    }
    
    int main() {
        vector<int> ans;
        for(int i = 1000000; i < 10000000; i ++) {
            if((int)sqrt(i) == sqrt(i) && is(i))
                ans.push_back(i);
        }
    
        int cnt = 0;
        for(int i = 0; i < ans.size(); i ++) {
            cnt ++;
            printf("%d ", ans[i]);
            printf("%s", (cnt % 10 == 0) ? "
    " : "");
        }
    
        return 0;
    }
    View Code

    问题 C: 打印图形

     代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int T;
    char mp[1010][1010];
    
    int main() {
        scanf("%d", &T);
        while(T --) {
            int n;
            scanf("%d", &n);
            for(int i = 1; i <= n; i ++) {
                for(int j = 1; j <= n; j ++) {
                    if(i == j) mp[i][j] = '*';
                    else if(i == 1 || i == n)
                        mp[i][j] = '*';
                    else if(j == 1 || j == n)
                        mp[i][j] = '*';
                    else mp[i][j] = '.';
                }
            }
    
            for(int i = 1; i <= n; i ++) {
                for(int j = 1; j <= n; j ++)
                    printf("%c", mp[i][j]);
                printf("
    ");
            }
        }
        return 0;
    }
    View Code

    问题 D: 借书

     代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int T;
    int n, m, w;
    int book[100];
    
    int main() {
        scanf("%d", &T);
        while(T --) {
            scanf("%d", &n);
            for(int i = 1; i <= n; i ++)
                scanf("%d", &book[i]);
            scanf("%d", &m);
            while(m --) {
                int x;
                scanf("%d", &x);
                if(x > 0) book[x] --;
                else book[abs(x)] ++;
            }
            scanf("%d", &w);
            if(book[w] > 1)
                printf("yes
    ");
            else printf("no
    ");
        }
        return 0;
    }
    View Code

    问题 E: 九宫

     代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int T;
    int maze[10][10];
    
    int main() {
        scanf("%d", &T);
        for(int y = 1; y <= T; y ++) {
            memset(maze, 0, sizeof(maze));
            for(int i = 0; i < 9; i ++)
                for(int j = 0; j < 9; j ++)
                    scanf("%d", &maze[i][j]);
    
            map<int, int> mp;
            bool flag = true;
            for(int i = 0; i < 9; i ++) {
                for(int j = 0; j < 0; j ++) {
                    mp[maze[i][j]] ++;
                    if(mp[maze[i][j]] > 1) {
                        flag = false;
                        //printf("Wrong
    ");
                        break;
                    }
                }
                mp.clear();
            }
    
            for(int i = 0; i < 9; i ++) {
                for(int j = 0; j < 9; j ++) {
                    mp[maze[j][i]] ++;
                    if(mp[maze[j][i]] > 1) {
                        flag = false;
                        //printf("Wrong
    ");
                        break;
                    }
                }
                mp.clear();
            }
    
            for(int i = 0; i < 9; i += 3) {
                for(int j = 0; j < 9; j += 3) {
                    for(int s = i; s < i + 3; s ++) {
                        for(int t = j; t < j + 3; t ++) {
                            mp[maze[s][t]] ++;
                            if(mp[maze[s][t]] > 1) {
                                flag = false;
                                //printf("Wrong
    ");
                                break;
                            }
                        }
                    }
                    mp.clear();
                }
            }
            if(flag) printf("Right
    ");
            else printf("Wrong
    ");
        }
        return 0;
    }
    View Code

    问题 F: 捡石头

     代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int T;
    
    int main() {
        scanf("%d", &T);
        while(T --) {
            int n;
            scanf("%d", &n);
            int win = 1;
            if(n % 8 == 0)
                win = 0;
    
            if(win) printf("");
            else printf("");
        }
        return 0;
    }
    View Code

    问题 G: 竞赛真理

     代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int n, t;
    int w1[50], w2[50], t1[50], t2[50];
    int dp[33][1080010];
    
    int main() {
        scanf("%d%d", &n, &t);
        for(int i = 0; i < n; i ++)
            scanf("%d%d%d%d", &w1[i], &t1[i], &w2[i], &t2[i]);
    
        for(int i = n - 1; i >= 0; i --) {
            for(int j = 0; j <= t; j ++) {
                if(j < t1[i] && j < t2[i])
                    dp[i][j] = dp[i + 1][j];
                else if(j < t1[i] && j >= t2[i])
                    dp[i][j] = max(dp[i + 1][j], dp[i + 1][j - t2[i]] + w2[i]);
                else if(j >= t1[i] && j < t2[i])
                    dp[i][j] = max(dp[i + 1][j], dp[i + 1][j - t1[i]] + w1[i]);
                else
                    dp[i][j] = max(dp[i + 1][j], max(dp[i + 1][j - t1[i]] + w1[i], dp[i + 1][j - t2[i]] + w2[i]));
            }
        }
    
        int ans = dp[0][t];
        printf("%d
    ", ans);
        return 0;
    }
    View Code

    问题 H: 吃西瓜

     代码:

    #include <stdio.h>
    #include <string.h>
    #define max(a, b) (a)>(b)?(a):(b)
    #define INF 0x3f3f3f3f3f3f3f
    const int N = 25;
    
    int t, A, B, C;
    long long g[33][51][51], sum[51][51][51][51], res[51][51][51][51];
    
    void init() {
        scanf("%d%d%d", &A, &B, &C);
        for (int i = 1; i <= A; i++)
            for (int j = 1; j <= B; j++)
                for (int k = 1; k <= C; k++)
                    scanf("%lld", &g[i][j][k]);
    }
    
    long long solve() {
        long long ans = -INF;
        for (int c = 1; c <= A; c++) {
            for (int i = 1; i <= B; i++) {
                for (int j = i; j <= B; j++) {
                    for (int k = 1; k <= C; k++) {
                        long long h = 0;
                        for (int l = k; l <= C; l++) {
                            h += g[c][j][l];
                            sum[i][j][k][l] = sum[i][j - 1][k][l] + h;
                            if (c == 1) res[i][j][k][l] = sum[i][j][k][l];
                            else res[i][j][k][l] = max(sum[i][j][k][l], res[i][j][k][l] + sum[i][j][k][l]);
                            ans = max(ans, res[i][j][k][l]);
                        }
                    }
                }
            }
        }
        return ans;
    }
    
    int main() {
        //scanf("%d", &t);
        //while (t--) {
            init();
            printf("%lld
    ", solve());
            if (t) printf("
    ");
        //}
        return 0;
    }
    View Code

    附加:二维数组的最大子矩阵和

       代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int n, m;
    
    int MaxSum(vector<vector<int> >& a) {
        int cur = 0;
        int maxx = INT_MIN;
        for(int i = 0; i < a.size(); i ++) {
            vector<int> s(a[0].size());
            for(int j = i; j < a.size(); j ++) {
                cur = 0;
                for(int k = 0; k < s.size(); k ++) {
                    s[k] += a[j][k];
                    cur += s[k];
                    maxx = max(maxx, cur);
                    cur = max(cur, 0);
                }
            }
        }
    
        return maxx;
    }
    
    int main() {
        scanf("%d%d", &n, &m);
        vector<vector<int> > v(n, vector<int>(m));
        for(int i = 0; i < n; i ++) {
           for(int j = 0; j < m; j ++)
                scanf("%d", &v[i][j]);
        }
    
        int ans = MaxSum(v);
        printf("%d
    ", ans);
        return 0;
    }
    View Code

    第一次参加的比赛 超级紧脏 还是要好好学呢

  • 相关阅读:
    分组与子报表Active Report6 使用(二)
    网站开发人员应该知道的62件事[转]
    如何恢复SVN中已删除文件或文件夹
    java中的List排序[转]
    [原]ActiveReport6 for net使用(一)
    Windows XP 不用输入密码自动登录
    IE不加载ActiveX控件的解决办法
    winRAR 打包小技巧
    iis负载均衡与文件同步[网摘]
    ASP.net的PDF打印(水晶报表)[摘]
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10074041.html
Copyright © 2011-2022 走看看