Wannafly挑战赛3

Posted BobHuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wannafly挑战赛3相关的知识,希望对你有一定的参考价值。

B遇见
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 65536K,其他语言131072K
64bit IO Format: %lld

题目描述

A和B在同一条路上,他们之间的距离为 k 米。A现在想见到B,所以A开车以 x km/h的速度朝着B的方向行驶,同时B也以 y km/h的速度朝着A的方向走去。A的车有 n 个档位,每个档位有不同的速度。现在假设A开车去见B,求他最快和最慢在几秒后能见到B。

输入描述:

一开始一行三个整数 n, m, k ,代表A的车的档位数、B行走的速度和AB之间的距离。
接下来一行 n 个整数,代表A的车的不同档位的行驶速度。

输出描述:

一行两个整数,代表A最快/最慢在几秒后能见到B(向上取整)。
示例1

输入

5 20 80
30 15 10 5 -5

输出

6 20

备注:

对于所有数据,0 <= n <= 1000,-100000 <= A车速度 <= 100000,-A最慢速度 < B行走速度 <= 100000,0 <= k <= 100000.
题目保证最大值和最小值都有解。

本来没看数据范围,还听大佬一直在喊+0.5,还真的就+0.5交了好几发。还说这个提交时间很长是还没有返回结果,还没交上,爆交失败

最后发现n=0,mmp

#include <bits/stdc++.h>
using namespace std;
int a[1005];
int main()
{
    int n,m,k;
    ios::sync_with_stdio(false);
    cin>>n>>m>>k;
    for(int i=0; i<n; i++)
        cin>>a[i];
    int ma=*max_element(a,a+n),mi=*min_element(a,a+n);
    cout<<(ceil)(k*3.6/fabs(m+ma))<<" "<<(ceil)(k*3.6/fabs(m+mi));
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    if(n==0)cout<<(ceil)(k*3.6/m)<<" "<<(ceil)(k*3.6/m);
    else
    {
        vector<int>V;
        for(int i=0; i<n; i++)
        {
            int x;
            cin>>x;
            V.push_back(x);
        }
        sort(V.begin(),V.end());
        cout<<(ceil)(k*3.6/(m+V[n-1]))<<" "<<(ceil)(k*3.6/(m+V[0]));
    }
    return 0;
}

 

DButterfly2
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 65536K,其他语言131072K
64bit IO Format: %lld

题目描述

给定一个 n*m 的矩阵,矩阵元素由X和O构成,请求出其中最大的蝴蝶形状。
蝴蝶形状的定义如下:
存在一个中心点(必须为X),并且其往左上(必须为X)、左下(必须为X)、右上(必须为O)、右下(必须为O)四个方向扩展相同的长度,且左上顶点与左下顶点之间全由X填充,右上顶点与右下顶点之间全由O填充。
我们不在意在蝴蝶形状内部是X还是O。
例如:
    XAAAO
    XXAOO
    XAXAO
    XXAOO
    XAAAO
是一个蝴蝶形状(其中A表示X或O)。
    X
也是。

    XAAO
    XXOO
    XXOO
    XAAO
不是(不存在中心点)。

输入描述:

第一行两个整数n, m表示矩阵的大小 (1 <= n, m <= 500);
接下来 n 行,每行一个长度为 m 的字符串表示矩阵,矩阵元素保证由X和O构成。

输出描述:

一行一个整数表示最大的蝴蝶形状的对角线的长度。
示例1

输入

5 5
XOOOO
XXOOO
XOXOO
XXOOO
XOOOO

输出

5

暴力前缀和,处理下情况,然后去枚举

#include <bits/stdc++.h>
using namespace std;
char s[501][501];
int X[501][501],O[501][501];
int n, m;
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++)
        scanf("%s",s[i]+1);
    for(int j=1; j<=m; j++)
        for(int i=1; i<=n; i++)
        {
            X[i][j]=X[i-1][j]+(s[i][j]==X);
            O[i][j]=O[i-1][j]+(s[i][j]==O);
        }
    int ans=0;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            if(s[i][j]==X)
            {
                ans=max(ans,1);
                for(int k=1;; k++)
                {
                    int l=j-k,r=j+k,u=i-k,d=i+k;
                    if(l<1||r>m||u<1||d>n||s[u][l]!=X||s[u][r]!=O||s[d][l]!=X||s[d][r]!=O)break;
                    if(O[d][l]-O[u-1][l]==0&&X[d][r]-X[u-1][r]==0)ans=max(ans, 1+2*k);
                }
            }
    printf("%d\n",ans);
    return 0;
}

 

以上是关于Wannafly挑战赛3的主要内容,如果未能解决你的问题,请参考以下文章

Wannafly挑战赛3

Wannafly挑战赛21A

Wannafly挑战赛3 record

Wannafly挑战赛13-C

Wannafly挑战赛4. B

NowCoder Wannafly挑战赛23 体验记