zoukankan      html  css  js  c++  java
  • Wannafly挑战赛3 record

    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.
    题目保证最大值和最小值都有解。

    签到题:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int main() {
     5     ll n;
     6     double m,k,data,minnum=100001,maxnum=-100001;
     7     cin>>n>>m>>k;
     8     k=k*1.0/1000;
     9     for(int i=0;i<n;++i) cin>>data,minnum=min(data,minnum),maxnum=max(data,maxnum);
    10     if(n==0) maxnum=minnum=0;
    11     double mintime=k*1.0/(maxnum+m);
    12     double maxtime=k*1.0/(minnum+m);
    13     mintime=mintime*60*60;
    14     maxtime=maxtime*60*60;    
    15     if(mintime-(int)mintime>1e-6) cout<<((int)mintime)+1<<" ";
    16     else cout<<(int)mintime<<" ";
    17     if(maxtime-(int)maxtime>1e-6) cout<<((int)maxtime)+1<<endl;
    18     else cout<<(int)maxtime<<endl;
    19     return 0;
    20 }
    View Code

    D Butterfly2

    时间限制: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

    继续签到:DFS

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N=505;
     4 int res=0,n,m;
     5 char ans[N][N];
     6 void dfs(int x, int y, int ins) {
     7     int x1,x2,y1,y2;
     8     x1=x+ins*(-1);
     9     x2=x+ins;
    10     y1=y+ins*(-1);
    11     y2=y+ins;
    12     int flag=1;
    13     if(x1<0||x1>=n||y1<0||y1>=m||x2<0||x2>=n||y2<0||y2>=m) {
    14         flag=0;
    15     }
    16     if(flag==0) return;
    17     if(ans[x1][y1]!='X'||ans[x2][y1]!='X'||ans[x1][y2]!='O'||ans[x2][y2]!='O') {
    18         flag=0;
    19     }
    20     if(flag==0) return;
    21     dfs(x,y,ins+1);
    22     for(int i=x1;i<=x2;++i) {
    23         if(ans[i][y1]!='X'||ans[i][y2]!='O') {
    24             flag=0;
    25             break;
    26         }
    27     }
    28     if(flag==0) return;
    29     res=max(res,2*ins+1);
    30 }
    31 
    32 int main() {
    33     ios::sync_with_stdio(false);
    34     cin>>n>>m;
    35     for(int i=0;i<n;++i) for(int j=0;j<m;++j) cin>>ans[i][j];
    36     for(int i=0;i<n;++i) 
    37         if(ans[i][0]=='X'||ans[i][m-1]=='X') { 
    38             res=1;break;
    39         }
    40     for(int i=0;i<m;++i) 
    41         if(ans[0][i]=='X'||ans[n-1][i]=='X') {
    42             res=1;break;
    43         }
    44     for(int i=1;i<=n-2;++i) {
    45         for(int j=1;j<=m-2;++j) {
    46             if(ans[i][j]=='X')
    47                 dfs(i,j,1);
    48         }
    49     }
    50     cout<<res<<endl;
    51     return 0;
    52 }
    View Code
  • 相关阅读:
    Java异常模块
    Java枚举相关知识
    Java单例设计模式和多例设计模式
    第一章 python中重要的数据结构(上)
    第二章 python中重要的数据结构(下)
    第三章 python中的字符串
    第四章 python中的面向对象设计
    第五章 python中的异常处理
    python开发环境必备之vim配置
    mysql 数据库备份方案及策略
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7816750.html
Copyright © 2011-2022 走看看