The 2021 ICPC Asia Regionals Online Contest (I)

F Land Overseer

思路:

通过样例不难猜出(a, b - r)这个点,然后开开心心的去交上,结果成功wa了。之后就感觉是不是还有别的情况,通过画图可以看出,当b < r时,如果还用上面这种情况,那距离不如中直接走x轴短,所以当b < r时,我们直接让他走x轴就好了,直接走x轴那距离总共最短就是2a - r

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int T;
    cin >> T;
    for(int i = 1; i <= T; i ++ )
    {
        long long a, b, r;
        cin >> a >> b >> r;
        if(b > r) printf("Case #%d: %.2lf", i, 2.0 * sqrt(a * a + (b - r) * (b - r)) - r);
        else printf("Case #%d: %.2lf", i, 2.0 * a - r);
        if(i != T) cout << endl;
    }
    
    
    return 0;
}

I Neiborhood Search

思路:

好像有好多人理解错题意了,其实没有这么复杂,就是判断输入的每一位数,看看和给的A相差的绝对值是不是小于r的就可以了,这题关键是输入,因为他没给你具体要输入多少个数,所以我们可以边输入边记录n,或者getline一行后stringstream处理

#include <bits/stdc++.h>

using namespace std;

const int N = 100010;

int s[N];

int main()
{
    int x;
    int n = 0;
    while(cin >> x) s[n ++ ] = x;
    int a = s[n - 2], r = s[n - 1];   
    n -= 2;
    sort(s, s + n, greater<int>());
    for(int i = 0; i < n; i ++ )
        if(abs(s[i] - a) <= r)
            cout << s[i] << ' ';
    
    return 0;
}

K Segment Routing

思路:

给的数据挺多,按题意模拟就好

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

vector<int>p[100010];

int main()
{
    int t;
    cin >> t;
    for(int w = 1; w <= t; w ++ )
    {
        printf("Case #%d: \n",w);
        int n, m;
        cin >> n >> m;
        for(int i = 0; i <= n; i ++ ) p[i].clear();
        for(int i = 1; i <= n; i ++ )
        {
            int k;
            cin >> k;
            while(k--)
            {
                int a;
                cin >> a;
                p[i].push_back(a);
            }
        }
        while(m -- )
        {
            bool flag = false;
            int now = 0;
            
            int a, b;
            cin >> a >> b;
            
            if(a > n) flag = true;
            now = a;
            while(b -- )
            {
                int c;
                cin >> c;
                if(c > p[now].size()) flag = true;
                else now = p[now][c - 1]; 
            }
            if(flag) cout << "Packet Loss";
            else cout << now;
            if(w != t || m != 0) cout << endl;
        }
    }
    return 0;
}

 

 

 

上一篇:AtCoder Grand Contest 009


下一篇:2020-2021 ACM-ICPC Latin American Regional Programming Contest K. Keylogger (dp,前缀和)