• hdu 5246 乱搞


    题意:题目太长直接看链接

    链接:点我

    乱搞题

    显然,一个人要想成功,必须大于等于最强的人的战斗力,所以我们从后往前看

    这里直接拿例1解释,首先递减排个序

    15,13,10,9,8

    作差得2,3,1,1,

    此时我们从10出发即可成功

    同时也发现,战斗力逐渐递增和直接到某个值其实是等价的

    于是我们假设战斗力是从15-13-10-9-8变化的,观察这种变化能否成功即可

    由13到15,变化为2,则从13出发剩余战斗力至少得提高2

    从10到13,战斗力要提高3,而k为3然后10小于m,即成功

    看一下反例2:

    8,9,10,13,16

    作差得3,3,1,1

    从13-16,战斗力至少要提高3,而战斗力最高才能提高3,所以必须从13出发才能成功,而13<m,则不能成功

    题目还是比较好想的,只是自己描述的不太清楚

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=10005;
    16 int n,tt;
    17 ll m;
    18 long long a[MAXN],b[MAXN];
    19 bool cmp(ll x,ll y)
    20 {
    21     return x>y;
    22 }
    23 int main()
    24 {
    25     int i,j;
    26     int k;
    27     #ifndef ONLINE_JUDGE
    28     freopen("1.in","r",stdin);
    29     #endif
    30     int ca=1;
    31     scanf("%d",&tt);
    32     while(tt--)
    33     {
    34         printf("Case #%d:
    ",ca++);
    35         scanf("%d%d%d",&n,&m,&k);
    36         for(i=1;i<=n;i++)   scanf("%I64d",&a[i]);
    37         sort(a+1,a+1+n,cmp);
    38         if(a[1]<=m)
    39         {
    40             printf("why am I so diao?
    ");
    41             continue;
    42         }
    43         for(i=1;i<n;i++)
    44         {
    45             b[i]=a[i]-a[i+1];
    46         }
    47         bool flag=0;
    48         int K=k;
    49         k=1;
    50         for(i=1;i<n;i++)
    51         {
    52             if(k>=K)
    53             {
    54                 if(a[i]<=m)
    55                 {
    56                     flag=1;
    57                     break;
    58                 }
    59                 else
    60                 {
    61                     flag=0;
    62                     break;
    63                 }
    64             }
    65             k=(int)b[i];
    66         }
    67         if(i==n&&a[n]<=m)
    68         {
    69             flag=1;
    70         }
    71         if(!flag)
    72         {
    73             printf("madan!
    ");
    74         }
    75         else
    76             printf("why am I so diao?
    ");
    77     }
    78 }
  • 相关阅读:
    js 小程序获取本周七天
    js 时间处理函数 获取今天的前几天和后几天的任意一天
    路由配置
    3 vue-router 的默认hash 改mode:history去除#号 传参
    Eslint 配置及规则说明(报错)
    打开左侧菜单栏
    sublime 对vue的高亮显示
    gitlab 本地建库配置 config
    GIT 安装
    v-html的应用
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4541333.html
Copyright © 2020-2023  润新知