zoukankan      html  css  js  c++  java
  • UPC——2020年春混合个人训练第二十五场(FG)

    太菜了只能写写签到

    问题 F: 求生大作战

    时间限制: 1 Sec 内存限制: 128 MB
    [提交] [状态]
    题目描述
    PinkRabbit 又趁 Czhou 不注意划水了,今天他打开了求生大作战,一共划了3次,每次划水时间分别为 t1,t2,t3,如果 PinkRabbit 的划水时间大于给定的时间 T,他就会被 Czhou 发现并跑 3000m。

    PinkRabbit 想知道,他要不要跑步。如果要,请输出Go running!,否则输出Keep rowing!。
    输入
    输入有 1 行,包含四个非负整数 t1,t2,t3,T(1≤t1,t2,t3,T≤1018),分别表示 PinkRabbit 三次划水时间和限制时间。相邻两个数之间用一个空格隔开。
    输出
    输出只有 1 行,包含一个字符串,Go running!或Keep rowing!。
    样例输入 Copy
    60 60 60 19260817
    样例输出 Copy
    Keep rowing!

    模拟,要开long long

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<queue>
    #include<stack>
    #include<map>
    using namespace std;
    const long long inf =0x3f3f3f3f;
    const int maxn=1e6+5; 
    const long long mod =19260817;
    #define PI 3.14159265358979323846
    #define ll long long
    #define ull unflaged ll
    inline int read()
    {
        int x=0,f=1;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
        while(s<='9'&&s>='0'){x=x*10+s-'0';s=getchar();}
        return x*f;
    }
    int main()
    {
        ll t1,t2,t3,t;
        cin>>t1>>t2>>t3>>t;
        ll ans=t1+t2+t3;
        if(ans>t)
        {
            cout<<"Go running!"<<endl;
        }
        else cout<<"Keep rowing!"<<endl;
    }
    

    问题 G: Q版泡泡堂

    时间限制: 1 Sec 内存限制: 128 MB
    [提交] [状态]
    题目描述
    Q 版泡泡堂是一种多人对战游戏,最多可以有四人参与游戏,每个人可以通过使用炸弹或其他道具来破坏砖块并消灭别人,最后剩下的那个人将会夺取胜利。

    Dodo 现在开始研究 Q 版泡泡堂的 AI ,现在他需要 AI 的一个部分,就是在给定的一个局面,求出将会有多少个人被炸弹消灭。

    地图是这样描述的:对于一个空地,用“.”表示;对于一个人,用P表示;对于一个炸弹,用B表示;对于墙,用#表示。

    对于一枚炸弹,它会影响半径为 p 的一个十字形内的人,但如果有一个方向有墙,那么这个炸弹不会影响到这个方向上墙以外的人。

    因为 dodo 忙着划水,所以他把这个问题交给了善于做题的你。
    输入
    输入的第一行,包含三个正整数 n,m,p(1≤n,m≤500,1≤p≤10),每两个数间以一个空格分开,分别代表地图的行数和列数和炸弹的爆炸半径。

    接下来的 n 行,每行 m 个字符,表示地图。
    输出
    输出一个整数,为会被炸弹消灭的人数。
    样例输入 Copy
    5 5 2
    .B#P.
    .P#…
    .#…
    .P…B
    …B…
    样例输出 Copy
    1

    模拟,可以从炸弹找人,也可以从人找炸弹。
    要注意遇到墙就不走了。
    my:从炸弹找人

    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ull;
     
    const int maxn=510;
    char mp[maxn][maxn];
    int vis[maxn][maxn];
    int n,m,k;
    int res=0;
    int nx[4]={0,0,1,-1};
    int ny[4]={1,-1,0,0};
     
    void dfs(int x,int y){
        for(int i=x+1;i<=min(x+k,n);i++){
            if(mp[i][y]=='#') break;
            else if(mp[i][y]=='P'&&!vis[i][y])
                vis[i][y]=1,res++;
        }
        for(int i=x-1;i>=max(0,x-k);i--){
            if(mp[i][y]=='#') break;
            else if(mp[i][y]=='P'&&!vis[i][y])
                vis[i][y]=1,res++;
        }
        for(int i=y-1;i>=max(0,y-k);i--){
            if(mp[x][i]=='#') break;
            else if(mp[x][i]=='P'&&!vis[x][i])
                vis[x][i]=1,res++;
        }
        for(int i=y+1;i<=min(y+k,n);i++){
             if(mp[x][i]=='#') break;
            else if(mp[x][i]=='P'&&!vis[x][i])
                vis[x][i]=1,res++;
        }
     
    }
     
    void AC(){
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=n;i++)
            cin>>mp[i]+1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(mp[i][j]=='B') dfs(i,j);
        printf("%d
    ",res);
    }
    int main(){
        AC();
        return 0;
    }
    

    队友的:从人找炸弹

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<queue>
    #include<stack>
    #include<map>
    using namespace std;
    const long long inf =0x3f3f3f3f;
    const int maxn=1e6+5; 
    const long long mod =19260817;
    #define PI 3.14159265358979323846
    #define ll long long
    #define ull unflaged ll
    inline int read()
    {
        int x=0,f=1;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
        while(s<='9'&&s>='0'){x=x*10+s-'0';s=getchar();}
        return x*f;
    }
    char a[505][505];
    int main()
    {
        int n,m,p;
        cin>>n>>m>>p;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i]+1;
        }
        ll ans=0;
        int flag1,flag2,flag3; 
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                flag3=0;
                if(a[i][j]=='P')
                {
                    for(int k=j-1;k>=j-p&&k>=1;k--)
                    {
                        if(a[i][k]=='#')
                        {
                            break;
                        }
                        else if(a[i][k]=='B')//有炸弹没
                        {
                            //ans++;
                            flag3=1;
                            break;
                        }
                    }
                    for(int k=j+1;k<=j+p&&k<=m;k++)
                    {
                        if(a[i][k]=='#')
                        {
                            break;
                        }
                        else if(a[i][k]=='B')//有炸弹没
                        {
                            //ans++;
                            flag3=1;
                            break;
                        }
                    }
                    for(int k=i-1;k>=1&&k>=i-p;k--)
                    {
                        if(a[k][j]=='#')
                        {
                            break;
                        }
                        else if(a[k][j]=='B')//有炸弹没
                        {
                            //ans++;
                            flag3=1;
                            break;
                        }
                    }
                    for(int k=i+1;k<=n&&k<=i+p;k++)
                    {
                        if(a[k][j]=='#')
                        {
                            break;
                        }
                        else if(a[k][j]=='B')//有炸弹没
                        {
                            //ans++;
                            flag3=1;
                            break;
                        }
                    }
                      
                }
                if(flag3) ans++;
            }
        }
        cout<<ans<<endl;
    }
    /*
    5 5 2
    .B#P.
    .P#..
    .#...
    .P..B
    ..B..
    */
    
  • 相关阅读:
    使用Xshell为xftp开ssh通道代理
    linux下查找svn的相关目录的命令
    linux服务器A远程连接服务器B的mysql及1045错误
    怎样下载带权限认证的文件?
    Vue项目打包部署总结
    Vue项目打包压缩:让页面更快响应
    axios请求失败自动重发
    可用的后台管理系统
    vue组件间方式总结
    非脚手架创建vue项目,并使用webpack打包
  • 原文地址:https://www.cnblogs.com/OvOq/p/14853136.html
Copyright © 2011-2022 走看看