zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 076

    A - Rating Goal


    Time limit : 2sec / Memory limit : 256MB

    Score : 100 points

    Problem Statement

    Takahashi is a user of a site that hosts programming contests.
    When a user competes in a contest, the rating of the user (not necessarily an integer) changes according to the performance of the user, as follows:

    • Let the current rating of the user be a.
    • Suppose that the performance of the user in the contest is b.
    • Then, the new rating of the user will be the avarage of a and b.

    For example, if a user with rating 1 competes in a contest and gives performance 1000, his/her new rating will be 500.5, the average of 1 and 1000.

    Takahashi's current rating is R, and he wants his rating to be exactly G after the next contest.
    Find the performance required to achieve it.

    Constraints

    • 0≤R,G≤4500
    • All input values are integers.

    Input

    Input is given from Standard Input in the following format:

    R
    G
    

    Output

    Print the performance required to achieve the objective.


    Sample Input 1

    Copy
    2002
    2017
    

    Sample Output 1

    Copy
    2032
    

    Takahashi's current rating is 2002.
    If his performance in the contest is 2032, his rating will be the average of 2002 and 2032, which is equal to the desired rating, 2017.


    Sample Input 2

    Copy
    4500
    0
    

    Sample Output 2

    Copy
    -4500
    

    Although the current and desired ratings are between 0 and 4500, the performance of a user can be below 0.

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<map>
    using namespace std;
     
    const int N = 1000 + 5;
     
    int c, n;
    struct node{
        int total_time = 0, total_solve = 0, num;
        map<int, int> state;
    }Node[N];
     
    int main(){
        double a, b;
        cin >> a >> b;
        cout << b * 2 - a <<endl;
    }

    B - Addition and Multiplication


    Time limit : 2sec / Memory limit : 256MB

    Score : 200 points

    Problem Statement

    Square1001 has seen an electric bulletin board displaying the integer 1. He can perform the following operations A and B to change this value:

    • Operation A: The displayed value is doubled.
    • Operation B: The displayed value increases by K.

    Square1001 needs to perform these operations N times in total. Find the minimum possible value displayed in the board after N operations.

    Constraints

    • 1≤N,K≤10
    • All input values are integers.

    Input

    Input is given from Standard Input in the following format:

    N
    K
    

    Output

    Print the minimum possible value displayed in the board after N operations.


    Sample Input 1

    Copy
    4
    3
    

    Sample Output 1

    Copy
    10
    

    The value will be minimized when the operations are performed in the following order: A, A, B, B.
    In this case, the value will change as follows: 1 → 2 → 4 → 7 → 10.


    Sample Input 2

    Copy
    10
    10
    

    Sample Output 2

    Copy
    76
    

    The value will be minimized when the operations are performed in the following order: A, A, A, A, B, B, B, B, B, B.
    In this case, the value will change as follows: 1 → 2 → 4 → 8 → 16 → 26 → 36 → 46 → 56 → 66 → 76.

    By the way, this contest is AtCoder Beginner Contest 076.

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<map>
    using namespace std;
     
     
    int main(){
        int n, k;
        int a = 1;
        cin >> n >> k;
        for(int i = 1; i <= n; i++){
            if(a + k < 2 * a) a += k;
            else a *= 2;
        }
        cout << a << endl;
    }
    #include<bits/stdc++.h>
     
    using namespace std;
     
    int n, k;
     
    int DFS(int n, int val){
        if(n == 0) return val;
        int a = DFS(n - 1, val * 2);
        int b = DFS(n - 1, val + k);
        return a > b ? b : a;
    }
    int main(){
        cin >> n >> k;
        cout << DFS(n, 1) << endl;
    }

    C - Dubious Document 2


    Time limit : 2sec / Memory limit : 256MB

    Score : 300 points

    Problem Statement

    E869120 found a chest which is likely to contain treasure.
    However, the chest is locked. In order to open it, he needs to enter a string S consisting of lowercase English letters.
    He also found a string S', which turns out to be the string S with some of its letters (possibly all or none) replaced with ?.

    One more thing he found is a sheet of paper with the following facts written on it:

    • Condition 1: The string S contains a string T as a contiguous substring.
    • Condition 2: S is the lexicographically smallest string among the ones that satisfy Condition 1.

    Print the string S.
    If such a string does not exist, print UNRESTORABLE.

    Constraints

    • 1≤|S'|,|T|≤50
    • S' consists of lowercase English letters and ?.
    • T consists of lowercase English letters.

    Input

    Input is given from Standard Input in the following format:

    S
    T'
    

    Output

    Print the string S.
    If such a string does not exist, print UNRESTORABLE instead.


    Sample Input 1

    Copy
    ?tc????
    coder
    

    Sample Output 1

    Copy
    atcoder
    

    There are 26 strings that satisfy Condition 1: atcoderbtcoderctcoder,..., ztcoder. Among them, the lexicographically smallest is atcoder, so we can say S=atcoder.


    Sample Input 2

    Copy
    ??p??d??
    abc
    

    Sample Output 2

    Copy
    UNRESTORABLE
    

    There is no string that satisfies Condition 1, so the string S does not exist.

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<set>
    using namespace std;
    string s, t;
    set<string> S;
     
    void Work(){
        int lens = s.size();
        int lent = t.size();
        for(int i = 0; i < lens; i++){
            if(s[i] == '?' || s[i] == t[0]){
                string tmp = s;
                for(int j = 0; j < i; j++) if(tmp[j] == '?') tmp[j] ='a';
                bool can = false;
                for(int j = 0; j < lent; j++){
                    if(tmp[i+j]!= '?' && tmp[i+j] != t[j]) break;
                    tmp[i+j] = t[j];
                    if(j == lent - 1) can = true;
                }
                if(can){
                    for(int j = i + lent; j < lens; j++) if(tmp[j] == '?') tmp[j] = 'a';
                    S.insert(tmp);
                }
            }
        }
        if(S.size() == 0) cout << "UNRESTORABLE" << endl;
        else cout << *S.begin() << endl;
    }
    int main(){
        cin >> s >> t;
        Work();
    }
  • 相关阅读:
    pip 安装指定版本
    译文:A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation
    泡泡一分钟:Perception-aware Receding Horizon Navigation for MAVs
    泡泡一分钟: A Linear Least Square Initialization Method for 3D Pose Graph Optimization Problem
    泡泡一分钟:LandmarkBoost: Efficient Visual Context Classifiers for Robust Localization
    泡泡一分钟:Visual Odometry Using a Homography Formulation with Decoupled Rotation and Translation Estimation Using Minimal Solutions
    小程序在同一行
    oracle分页查询原理浅析
    css实现圆形头像
    纯css控制文字2行显示多余部分隐藏
  • 原文地址:https://www.cnblogs.com/Pretty9/p/7784874.html
Copyright © 2011-2022 走看看