• AtCoder Beginner Contest 104


    A - Rated for Me


    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 100100 points

    Problem Statement

    A programming competition site AtCode regularly holds programming contests.

    The next contest on AtCode is called ABC, which is rated for contestants with ratings less than 12001200.

    The contest after the ABC is called ARC, which is rated for contestants with ratings less than 28002800.

    The contest after the ARC is called AGC, which is rated for all contestants.

    Takahashi's rating on AtCode is RR. What is the next contest rated for him?

    Constraints

    • 0R42080≤R≤4208
    • RR is an integer.

    Input

    Input is given from Standard Input in the following format:

    RR
    

    Output

    Print the name of the next contest rated for Takahashi (ABCARC or AGC).


    Sample Input 1 Copy

    Copy
    1199
    

    Sample Output 1 Copy

    Copy
    ABC
    

    11991199 is less than 12001200, so ABC will be rated.


    Sample Input 2 Copy

    Copy
    1200
    

    Sample Output 2 Copy

    Copy
    ARC
    

    12001200 is not less than 12001200 and ABC will be unrated, but it is less than 28002800 and ARC will be rated.


    Sample Input 3 Copy

    Copy
    4208
    

    Sample Output 3 Copy

    Copy
    AGC
    代码:
    import java.util.*;
    
    public class Main {
        
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            if(n < 1200)System.out.println("ABC");
            else if(n < 2800)System.out.println("ARC");
            else System.out.println("AGC");
        }
    }

    B - AcCepted


    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 200200 points

    Problem Statement

    You are given a string SS. Each character of SS is uppercase or lowercase English letter. Determine if SS satisfies all of the following conditions:

    • The initial character of SS is an uppercase A.
    • There is exactly one occurrence of C between the third character from the beginning and the second to last character (inclusive).
    • All letters except the A and C mentioned above are lowercase.

    Constraints

    • 4|S|104≤|S|≤10 (|S||S| is the length of the string SS.)
    • Each character of SS is uppercase or lowercase English letter.

    Input

    Input is given from Standard Input in the following format:

    SS
    

    Output

    If SS satisfies all of the conditions in the problem statement, print AC; otherwise, print WA.


    Sample Input 1 Copy

    Copy
    AtCoder
    

    Sample Output 1 Copy

    Copy
    AC
    

    The first letter is A, the third letter is C and the remaining letters are all lowercase, so all the conditions are satisfied.


    Sample Input 2 Copy

    Copy
    ACoder
    

    Sample Output 2 Copy

    Copy
    WA
    

    The second letter should not be C.


    Sample Input 3 Copy

    Copy
    AcycliC
    

    Sample Output 3 Copy

    Copy
    WA
    

    The last letter should not be C, either.


    Sample Input 4 Copy

    Copy
    AtCoCo
    

    Sample Output 4 Copy

    Copy
    WA
    

    There should not be two or more occurrences of C.


    Sample Input 5 Copy

    Copy
    Atcoder
    

    Sample Output 5 Copy

    Copy
    WA
    

    The number of C should not be zero, either.

    代码:

    import java.util.*;
    
    public class Main {
        static boolean check(String s) {
            if(s.charAt(0) != 'A')return false;
            boolean flag = false;
            for(int i = 1;i < s.length();i ++) {
                if(s.charAt(i) != 'C') {
                    if(s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')return false;
                }
                else if(flag || i < 2 || s.length() - i < 2)return false;
                else flag = true;
            }
            return flag;
        }
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String s = in.nextLine();
            if(check(s)) {
                System.out.println("AC");
            }
            else {
                System.out.println("WA");
            }
        }
    }

    C - All Green


    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 300300 points

    Problem Statement

    A programming competition site AtCode provides algorithmic problems. Each problem is allocated a score based on its difficulty. Currently, for each integer iibetween 11 and DD (inclusive), there are pipi problems with a score of 100i100i points. These p1++pDp1+…+pD problems are all of the problems available on AtCode.

    A user of AtCode has a value called total score. The total score of a user is the sum of the following two elements:

    • Base score: the sum of the scores of all problems solved by the user.
    • Perfect bonuses: when a user solves all problems with a score of 100i100i points, he/she earns the perfect bonus of cici points, aside from the base score (1iD)(1≤i≤D).

    Takahashi, who is the new user of AtCode, has not solved any problem. His objective is to have a total score of GG or more points. At least how many problems does he need to solve for this objective?

    Constraints

    • 1D101≤D≤10
    • 1pi1001≤pi≤100
    • 100ci106100≤ci≤106
    • 100G100≤G
    • All values in input are integers.
    • cici and GG are all multiples of 100100.
    • It is possible to have a total score of GG or more points.

    Input

    Input is given from Standard Input in the following format:

    DD GG
    p1p1 c1c1
    ::
    pDpD cDcD
    

    Output

    Print the minimum number of problems that needs to be solved in order to have a total score of GG or more points. Note that this objective is always achievable (see Constraints).


    Sample Input 1 Copy

    Copy
    2 700
    3 500
    5 800
    

    Sample Output 1 Copy

    Copy
    3
    

    In this case, there are three problems each with 100100 points and five problems each with 200200 points. The perfect bonus for solving all the 100100-point problems is 500500 points, and the perfect bonus for solving all the 200200-point problems is 800800 points. Takahashi's objective is to have a total score of 700700 points or more.

    One way to achieve this objective is to solve four 200200-point problems and earn a base score of 800800 points. However, if we solve three 100100-point problems, we can earn the perfect bonus of 500500 points in addition to the base score of 300300 points, for a total score of 800800 points, and we can achieve the objective with fewer problems.


    Sample Input 2 Copy

    Copy
    2 2000
    3 500
    5 800
    

    Sample Output 2 Copy

    Copy
    7
    

    This case is similar to Sample Input 1, but the Takahashi's objective this time is 20002000 points or more. In this case, we inevitably need to solve all five 200200-point problems, and by solving two 100100-point problems additionally we have the total score of 20002000 points.


    Sample Input 3 Copy

    Copy
    2 400
    3 500
    5 800
    

    Sample Output 3 Copy

    Copy
    2
    

    This case is again similar to Sample Input 1, but the Takahashi's objective this time is 400400 points or more. In this case, we only need to solve two 200200-point problems to achieve the objective.


    Sample Input 4 Copy

    Copy
    5 25000
    20 1000
    40 1000
    50 1000
    30 1000
    1 1000
    

    Sample Output 4 Copy

    Copy
    66
    

    There is only one 500500-point problem, but the perfect bonus can be earned even in such a case.

    可以dfs遍历所有的情况,直到大于等于所需要的为止。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define Max 100001
    #define inf 1000000000000000
    using namespace std;
    struct title {
        int p,c,score;
    }s[11];
    int d,g,ans = 1000;
    int vis[11];
    void dfs(int sum,int k) {
        for(int i = 1;i <= d;i ++) {
            if(vis[i])continue;
            if(g - sum <= s[i].score) {
                int temp;
                if(g - sum < s[i].p * i) {
                    temp = g - sum;
                    temp = temp / i + (temp % i > 0);
                }
                else temp = s[i].p;
                ans = min(ans,k + temp);
                continue;
            }
            vis[i] = 1;
            dfs(sum + s[i].score,k + s[i].p);
            vis[i] = 0;
        }
    }
    int main() {
        scanf("%d%d",&d,&g);
        g /= 100;
        for(int i = 1;i <= d;i ++) {
            scanf("%d%d",&s[i].p,&s[i].c);
            s[i].c /= 100;
            s[i].score = s[i].p * i + s[i].c;
        }
        dfs(0,0);
        printf("%d",ans);
    }

    因为最多十种题目,可以用二进制位存状态,遍历各种情况。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define Max 100001
    #define inf 1000000000000000
    using namespace std;
    struct problem {
        int p,c,score;
    }s[11];
    int d,g,ans = 1000;
    
    int main() {
        scanf("%d%d",&d,&g);
        g /= 100;
        for(int i = 1;i <= d;i ++) {
            scanf("%d%d",&s[i].p,&s[i].c);
            s[i].c /= 100;
            s[i].score = s[i].p * i + s[i].c;
        }
        for(int i = 1;i < 1 << (d + 1);i ++) {
            int sum = 0,k = 0,maxn;
            for(int j = 1;j <= d;j ++) {
                if(i & (1 << j)) {
                    sum += s[j].score;
                    k += s[j].p;
                }
                else maxn = j;
            }
            if(sum < g) {
                int need = (g - sum + maxn - 1) / maxn;
                if(need > s[maxn].p)continue;
                k += need;
            }
            ans = min(ans,k);
        }
        printf("%d",ans);
    }

    D - We Love ABC


    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 400400 points

    Problem Statement

    The ABC number of a string TT is the number of triples of integers (i,j,k)(i,j,k) that satisfy all of the following conditions:

    • 1i<j<k|T|1≤i<j<k≤|T| (|T||T| is the length of TT.)
    • Ti=Ti= A (TiTi is the ii-th character of TT from the beginning.)
    • Tj=Tj= B
    • Tk=Tk= C

    For example, when T=T= ABCBC, there are three triples of integers (i,j,k)(i,j,k) that satisfy the conditions: (1,2,3),(1,2,5),(1,4,5)(1,2,3),(1,2,5),(1,4,5). Thus, the ABC number of TT is 33.

    You are given a string SS. Each character of SS is ABC or ?.

    Let QQ be the number of occurrences of ? in SS. We can make 3Q3Q strings by replacing each occurrence of ? in SS with AB or C. Find the sum of the ABC numbers of all these strings.

    This sum can be extremely large, so print the sum modulo 109+7109+7.

    Constraints

    • 3|S|1053≤|S|≤105
    • Each character of SS is ABC or ?.

    Input

    Input is given from Standard Input in the following format:

    SS
    

    Output

    Print the sum of the ABC numbers of all the 3Q3Q strings, modulo 109+7109+7.


    Sample Input 1 Copy

    Copy
    A??C
    

    Sample Output 1 Copy

    Copy
    8
    

    In this case, Q=2Q=2, and we can make 3Q=93Q=9 strings by by replacing each occurrence of ? with AB or C. The ABC number of each of these strings is as follows:

    • AAAC00
    • AABC22
    • AACC00
    • ABAC11
    • ABBC22
    • ABCC22
    • ACAC00
    • ACBC11
    • ACCC00

    The sum of these is 0+2+0+1+2+2+0+1+0=80+2+0+1+2+2+0+1+0=8, so we print 88 modulo 109+7109+7, that is, 88.


    Sample Input 2 Copy

    Copy
    ABCBC
    

    Sample Output 2 Copy

    Copy
    3
    

    When Q=0Q=0, we print the ABC number of SS itself, modulo 109+7109+7. This string is the same as the one given as an example in the problem statement, and its ABC number is 33.


    Sample Input 3 Copy

    Copy
    ????C?????B??????A???????
    

    Sample Output 3 Copy

    Copy
    979596887
    

    In this case, the sum of the ABC numbers of all the 3Q3Q strings is 22919796129242291979612924, and we should print this number modulo 109+7109+7, that is, 979596887979596887.

    动态规划。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define Max 100005
    using namespace std;
    typedef long long LL;
    const int Mod = 1000000007;
    char s[Max];
    LL dp[4][Max];///0 '?' 1 'A' 2 'AB' 3 'ABC'
    int a,b;
    int main() {
        scanf("%s",s + 1);
        dp[0][0] = 1;///初始为1
        int n = strlen(s + 1);
        for(int i = 1;i <= n;i ++) {
            for(int j = 0;j <= 3;j ++) {
                dp[j][i] = dp[j][i - 1];///加上之前的
                if(s[i] == '?')dp[j][i] = (dp[j][i] * 3) % Mod;///如果是问号 有三种选择
                if(j && (s[i] == '?' || s[i] - 'A' + 1 == j)) {///如果对应于匹配位置
                    dp[j][i] = (dp[j][i] + dp[j - 1][i - 1]) % Mod;
                }
            }
        }
        printf("%lld",dp[3][n]);
    }
  • 相关阅读:
    job owner的权限和sql agent start account权限在job调用和job执行的各个阶段起什么作用?
    【转帖】SharePoint 2010中的沙盒解决方案(Sandboxed Solution)
    [ZT]使用IIS作为宿主的WCF服务出现HTTP Error 404.3 Not Found错误的解决办法
    [zt]SharePoint Calculate date column 日期计算列(20100916 23:04:14)
    PortalSiteMapProvider was unable to fetch children for node
    [ZT]SharePoint列表导入/导出命令 SharePoint列表导入/导出命令
    [ZT]一个女IT民工的梦
    “System.Collections.Generic.IEnumerable<TestDAL.HistoryData>”不包含“ToList”的定义
    C#生成随机序列
    利用C#线程窗口调试多线程程序
  • 原文地址:https://www.cnblogs.com/8023spz/p/9448410.html
Copyright © 2020-2023  润新知